Следующий код прекрасно компилируется:
struct A {
int i;
constexpr A() : i(1) { }
constexpr A(const A& that) : i(1) { }
};
constexpr auto func() {
std::array<A, 3> result = {};
return result;
}
Однако, если мы добавим параметр типа шаблона T
в A
,
template<typename T> struct A {
int i;
constexpr A() : i(1) { }
constexpr A(const A<T>& that) : i(1) { }
};
constexpr auto func() {
std::array<A<int>, 3> result = {};
return result;
}
ошибки компилятора " Функция constexpr 'func' не может привести к постоянному выражению".
Как это возможно?