
AMDG On 03/22/2012 04:33 PM, petros wrote:
Thx for the reply. Did not understand it though.
Okay, lets walk through it. Start with the macro call: BOOST_PP_ARRAY_PUSH_BACK( barfoo, 3 ) barfoo is a two element array, containing the values 1 and 2. Thus, when we call push back we get a three element array containing 1, 2, and 3. Therefore, the macro expands to (3, (1, 2, 3)) If you run the preprocessor only, you will get an output file containing this. However, you aren't running just the preprocessor. The compiler runs on the output of the preprocessor. You couldn't put (3, (1, 2, 3)) in a C++ source file and expect it to compile. Well, it makes no difference to the compiler whether it's directly in the source, or the result of a macro expansion. It's illegal either way. Hence your error.
And yes, I could not understand the definition myself, but copied from the example of the official documentation: http://www.boost.org/doc/libs/1_48_0/libs/preprocessor/doc/index.html How is this different from the example in there ?
It isn't. That example won't compile either. In Christ, Steven Watanabe