
Hi The following code compiles fine under clang 3.0 but I get unexpected output: #include <iostream> #include <boost/mpl/for_each.hpp> #include <boost/mpl/vector.hpp> template< typename _state > struct AccSize{ size_t s = 0; _state xxxx; template<typename T> void operator()(T) { std::cout << s << " " << sizeof(T) << std::endl; s += sizeof(T); }; }; struct Foo { Foo () {} Foo (const Foo & rhs) {} }; struct A{}; int main(int argc, const char *argv[]) { using namespace std; AccSize < Foo > p; typedef boost::mpl::vector<int, int, int> list; boost::mpl::for_each< list >( p ); return 0; } The output I get is: 0 4 0 4 0 4 The output I expected is: 0 4 4 4 8 4 If I remove the copy constructor in Foo, it works as I expect, and if I do a "normal" initialization of AccSize::s it also works as I expect. Is this a bug? If so, how can it be reproduced without mpl::foreach Best regards Allan W. Nielsen