
El 15/01/2010 05:35 p.m., Henning Meyer escribió:
Hello,
when compiling a simple test like this:
#include
int main(void) { int c = 0; boost::format("%1% %2%") % (c==42) % c++; } with this command: $ c++ -c -O -Wall -o ftest.o ftest.cc
I get this warning: ftest.cc: In function ‘int main()’: ftest.cc:4: warning: operation on ‘c’ may be undefined
What did I do wrong?
Its implementation defined whether the evaluation of c==42 will happen before or after the evaluation of c++. I am happy to see a compiler that does emit a warning on this kind of code. Simply modify your code like this boost::format("%1% %2%") % (c==42) % c; c++; or this c++; boost::format("%1% %2%") % (c==42) % c; depending on what you actually intended. More on the subject here: http://talesofcpp.blogspot.com/2009/10/episode-ten-natural-order-of-things.h... K-ballo.-