2016-10-28 2 views
0

2 번째 줄과 3 번째 줄 (아래 참조)에서 컴파일러 오류가 발생하지만 첫 번째 줄에서 컴파일러 오류가 발생하는 이유는 무엇입니까?C++ 정적 (문자열) 멤버 초기화 논리

struct X { 
    static constexpr const char* f1 = "f1"; // ok 
    static const char* f2 = "f2";   // error 
    static const std::string f3 = "f3"; // error 

}; 

답변

0

constexpr은 즉시 초기화하거나 구성해야하며 동일한 정적 멤버는 동일한 네임 스페이스 내의 번역 단위에 있어야합니다.

const std::string X::f3 = "f3"; 
+0

* 사용하지 않는 * ODR 중고품이라고 생각합니다. –

관련 문제