Почему конструктор структуры шаблона не может быть использован, если он объявлен внутри класса?C++

Программы на C++. Форум разработчиков
Anonymous
Почему конструктор структуры шаблона не может быть использован, если он объявлен внутри класса?

Сообщение Anonymous »

Я хочу инициировать массив const, поэтому я написал struct: < /p>
class A {
template struct Make_0 {
long long z[N];
constexpr Make_0() : z() {
z[0] = 1;
for (int i = 1; i < N; i++) {
z = z * 10;
}
}
};

public:
static constexpr auto _z = Make_0();
static constexpr const long long *z = _z.z;
};
< /code>
Однако компилятор жаловался: < /p>
Constexpr variable '_z' must be initialized by a constant expression clang(constexpr_var_requires_const_init)
Undefined constructor 'Make_0' cannot be used in a constant expression

Я переместил make_0 за пределами , теперь он работает. Но почему? Я не вижу никакой разницы, так как -просто общий класс
Код работает:
template struct Make_0 {
long long z[N];
constexpr Make_0() : z() {
z[0] = 1;
for (int i = 1; i < N; i++) {
z = z * 10;
}
}
};

class A {
public:
static constexpr auto _z = Make_0();
static constexpr const long long *z = _z.z;
};


Подробнее здесь: https://stackoverflow.com/questions/794 ... ide-a-clas

Вернуться в «C++»