Boost logo

Boost Users :

Subject: Re: [Boost-users] mpl::c_str<mpl::string<>> compile error
From: Dan Searles (dansearles_at_[hidden])
Date: 2013-05-09 10:11:55


>Hello, > >the code here doesn't compile: > >#include <boost/mpl/string.hpp> >#include <iostream> > >namespace mpl = boost::mpl; > >typedef mpl::string<'h','e','l','l','o',' ','w','o','r','l','d'>::type >my_hello; > >int main() >{ >    std::cout << mpl::c_str<my_hello>::value << '\n'; >    std::cout << BOOST_MPL_LIMIT_STRING_SIZE << '\n'; >} > >As usual, the example from docs works. The error is: > >$ LANG=en g++ t.cpp -o t && ./t >t.cpp:6:64: error: wrong number of template arguments (11, should be 8) >/usr/local/include/boost/mpl/string.hpp:102:12: error: provided for >'template<int C0, int C1, int C2, int C3, int C4, int C5, int C6, int >C7> struct boost::mpl::string' >t.cpp:6:72: error: expected initializer before 'my_hello' >t.cpp: In function 'int main()': >t.cpp:10:26: error: 'my_hello' was not declared in this scope >t.cpp:10:34: error: template argument 1 is invalid > >why does it complain about wrong number of template arguments? >BOOST_MPL_LIMIT_STRING_SIZE is 32? > >$ svn info >... >Path: . >URL: http://svn.boost.org/svn/boost/trunk >Repository Root: http://svn.boost.org/svn/boost >Repository UUID: b8fc166d-592f-0410-95f2-cb63ce0dd405 >Revision: 83988 >... >$ LANG=en g++ --version >g++ (GCC) 4.6.3 20120306 (Red Hat 4.6.3-2) >... > >Thanks, >Olaf I'm surprised multi-character character constants are being used at all in Boost, they are not supposed to be portable: http://stackoverflow.com/questions/6944730/multiple-characters-in-a-character-constant If you only want to use single character constants, you could place the following #define before any includes: #define BOOST_MPL_LIMIT_STRING_SIZE (32*4) That would allow up to 32, provided your compiler supports it (yet another portability issue). Since in C++, the type of 'x' is char, it should be possible to create another overload of mpl::string<> that takes BOOST_MPL_LIMIT_STRING_SIZE 'char's, which would work the way most people would expect. Dan Searles


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net