Boost logo

Boost Users :

Subject: Re: [Boost-users] BOOST_PP_ARRAY_PUSH_BACK
From: Steven Watanabe (watanabesj_at_[hidden])
Date: 2012-03-23 00:16:44


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


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