// Initializer list
#include <initializer_list>
template < int n >
class Vec
{
private:
float e[n];
public:
Vec(std::initializer_list<float> params);
constexpr int GetSize( void ) const { return n; }
};
template < int n >
Vec<n>::Vec<n>(std::initializer_list<float> params) {
static_assert(params.count() == n, “size mismatch”); // C++11
std::initializer_list<float>::iterator it = params.begin();
for (float &x: e) { // C++11 foreach
x = *it;
++it;
}
}