Я определяю тип с именем inputTy
с использованием std::array
(C++ 11), размерность массива, объявленного как внешнее постоянное целое число d
.Ошибка компиляции при typedef an std :: array
namespace project {
namespace types{
extern const int d;
typedef std::array<double, d> inputTy;
}
}
Почему у меня такая ошибка при компиляции?
../../include/types.h:16:29: error: the value of ‘d’ is not usable in a constant expression
typedef std::array<double, d> inputTy;
^
../../include/types.h:15:18: note: ‘d’ was not initialized with a constant expression
extern const int d;
^
Благодарим за помощь.
Я думаю, что значение 'd' должно быть константой времени компиляции. Когда это внешний вид, как должен компилятор знать? – helb
Возможный дубликат [Каковы требования для параметров шаблона C++?] (Http://stackoverflow.com/questions/643763/what-are-the-requirements-for-c-template-parameters) – martin