Интересно, можно ли инициализировать весь массив с помощью функции constexpr (в C++ 2011). Вот кое-что, чтобы проиллюстрировать то, что я хочу сделать:
template<unsigned int DIM> const unsigned int MyClass<DIM>::_myVar[2][3] = {
{metaFunction(0, 0, DIM), metaFunction(0, 1, DIM), metaFunction(0, 2, DIM)},
{metaFunction(1, 0, DIM), metaFunction(1, 1, DIM), metaFunction(1, 2, DIM)}
};
template<unsigned int DIM> inline constexpr unsigned int MyClass<DIM>::metaFunction(const unsigned int k, const unsigned int n, const unsigned int dim)
{
return (((n < dim) && (k < n)) ? (1<<(n-k)) : (0));
}
Есть ли способ инициализировать myVar с помощью constexpr без заполнения массива вручную. И если он существует, каков будет синтаксис для данного примера?
Чтобы немного уточнить вопрос, я ищу способ заполнить все значения myVar с помощью одного вызова функции.