Joel de Guzman wrote:
I guess so. (Hmm.. I recall that the proposes solution for std::pair is to make it accept value, not reference, and don't know the motivation, except that this solution is the simplest)Hmm... the same problem can be seen if you try
std::make_pair("1", "2");
the template parameters are deduces as char[1] and char[1], and there's no much you can do with that type, not even copy it. That's the way template
argument deduction works, IIRC. I suggest that you change ctors of any and
any::holder to take value instead of reference, and tell what you got. Of course, you should be able to say
boost::any test = static_cast<const char*>("Test me");
Yes, but a library can make it work. For instance, make_tuple("hello, ", "world") works as expected. QOI matter?
// Arrays can't be stored as plain types; convert them to references.
template<class T, int n> struct make_tuple_traits <T[n]> {
typedef const T (&type)[n];
};
Wait a minute! If T[n] is converted to T[n]&, then it would mean
make_tuple("1", "2") and make_tuple("1", "23") will generate different
template specializations? I'd rather convert T[n] to T*, but probably I
miss something.- Volodya _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
