Subject: Re: [boost] [mpl] mpl::c_str fails for mpl::push_back
From: Aleksey Gurtovoy (agurtovoy_at_[hidden])
Date: 2010-11-08 04:47:41
On Sun, 07 Nov 2010 01:38:05 -0600, vicente.botet
> No push_back on a mpl::string is works as it is yet a Integral Sequence
> Wrapper. But push_back on a vector_c which is a Integral Sequence
> Wrapper is not a Integral Sequence Wrapper and this seems to me a more
> critical issue.
> // compile fail
> I was loking for a way to represent static sequences of arbitrary
> chararcters types and mpl::string doesn't supports wchar_t, u16char or
> u32char so I though to move to vector_c.
> BTW, I have found the use of c_str in a MPL tests string.cpp
> typedef mpl::vector_c<char, 'a','b','c','d','e'> rgc;
> *** BOOST_TEST(0 == std::strcmp("abcde", mpl::c_str<rgc>::value));
> typedef mpl::copy<rgc, mpl::back_inserter<mpl::string<> > >::type
> BOOST_TEST(0 == std::strcmp("abcde", mpl::c_str<str>::value));
> I don't think I could find something in the doc that states that the
> push_back on a Integral Sequence Wrapper must be a Integral Sequence
> Wrapper, but I think that this is a desirable property.
It might seem so on the surface, but consider this:
typedef push_back< rgc, long_<MAX_LONG> >::type v;
typedef push_back< rgc, struct my >::type v;
> Do you have a workaround I can use to preserve it?
> Do you think that it is possible to ensure that property without too
> much trouble inside the library?
It's certainly possible, but it would also certainly complicate things. At
the moment it seems to me to be too special of a case to be worth the
-- Aleksey Gurtovoy MetaCommunications Engineering
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk