Ниже не удается скомпилировать как gcc, так и clang в С++ 14, но с помощью С++ 1z:
struct Cls {
static constexpr int N = 0;
};
constexpr int Cls::N;
constexpr int Cls::N;
Ошибка С++ 14 предсказуема: redefinition of ‘constexpr const int Cls::N’
Что изменилось, чтобы сделать это законным? Я нашел:
n4659 10.1.5 [dcl.constexpr]
Функция или статический член данных, объявленный с помощью constexpr specifier неявно является встроенной функцией или переменной
Итак, я думал, что это может иметь отношение к встроенным переменным, но следующее не выполняется для С++ 1z под обоими компиляторами
struct Cls {
static inline const int N = 0;
};
inline const int Cls::N; // note, only one definition here