|
Boost : |
From: Vladimir Prus (ghost_at_[hidden])
Date: 2003-01-31 04:01:38
Greg Dehaas wrote:
> Hi All,
> boost::any test = "Test Me";
[...]
> And the error message is:
> c:\dev\boost\boost\any.hpp(105) : error C2536: 'boost::any::holder<char
> [8]>::held' : cannot specify explicit initializer for arrays
> c:\dev\boost\boost\any.hpp(122) : see declaration of 'held'
> c:\dev\boost\boost\any.hpp(103) : while compiling class-template
> member function '__thiscall boost::any::holder<char
> [8]>::boost::any::holder<char [8]>(const char (&)[8])'
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");
HTH,
Volodya
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk