Рассмотрим следующий код C ++ 14 (это важно):
struct B {
static constexpr int a = 1;
};
int main() {
auto p = &B::a;
}
При компиляции с g cc это приводит к "неопределенной ссылке", поскольку B::a
не определено (только объявлено) , Чтобы решить эту проблему, мы просто должны определить B::a
вне структуры:
constexpr int B::a;
Но у меня проблема с компилятором msv c. Даже без определения B::a
первый фрагмент кода просто скомпилирован хорошо (без проблемы с «неопределенной ссылкой»).
Есть ли способ (я думаю, опция компилятора) сказать msv c, чтобы обнаружить такую проблему, компилируемую для стандарта C ++ 14, т.е. когда используется опция /std:c++14
?
Вот ссылка на Godbolt, где я тестировал проблему: https://godbolt.org/z/G8BnFY