
I would like to use boost::array as a class data member. This raises a problem when constructing it in the initialization list of the class members: class A { boost::array<int, 3> a; A() : a(???) {} // what do I write here ??? }; Is there a way to construct the data member efficiently? By efficiently, I mean using copy constructors instead of default constructors followed by assignments of array elements. I have not found anything in the documentation on this question, and the only initialization method mentioned there is the ={...} syntax, which does not work in this case. Did I miss anything ? The way I managed to do what I wanted was to introduce an auxiliary function: template < typename T > inline boost::array<T, 3> make_array(const T& b1, const T& b2, const T& b3) { boost::array<T, 3> a = { b1, b2, b3 }; return a; } and using it: class A { boost::array<int, 3> a; A() : a(make_array(1,2,3)) {} }; With a compiler doing the return value optimization, this does what I need. Do people think it is an important enough use case, that this would warrant to be added to Boost.Array ? What about TR1's array ? Of course, it would require N overloads of the make_array() functions (unless variadic templates are used :). But at least providing it for e.g. N<10 in boost would be useful, IMHO. -- Sylvain