Please don't top-post:
http://www.boost.org/community/policy.html#quoting
So, to sum up the top-posted chain of posts of yours,
boost::multi_index::member<Class,Type,PtrToMember> publicizes its
result type as
typedef Type result_type;
yet its call operator overloads return Type& or const Ttype&, and this
results in some warnings in VS 12 / Boost 1.49 when used in combination
with boost::adaptors::transform.
So, whatever the problem is, it does not belong in Boost.MultiIndex,
since member merely defines result_type in accordance with the
requirements of the Key Extractor model:
http://www.boost.org/libs/multi_index/doc/reference/
key_extraction.html#key_extractors
I mean, defining result_type in whatever way (or not defining it
at all) is not an error per se; it is Boost.Range assumptions on
this typedef that might be problematic. Unfortunately, the documentation
for boost::adaptors::tranform(rng,fun)
http://www.boost.org/libs/range/doc/html/range/reference/
adaptors/reference/transformed.html
do not mention what the requirements on fun are, whether it is
mandatory that a result_type be present and how this is handled by
Boost.Range. I suggest you initiate a new discussion with [range]
in the subject line showing the problem you found. I suspect this
is related to boost:result_of
http://www.boost.org/libs/utility/utility.htm#result_of
which Boost.Range seems to use internally, but only the author can
tell. Also, if the problem does not show in Boost 1.56 you might be
encouraged to simply upgrade and move on.