우리가 헤더 foo.h
포함을 상상해 다음C++ 표준 : 네임 스페이스 범위의 constexpr 변수에 내부 연결이 있습니까?
#ifndef FOO_H_
#define FOO_H_
namespace foo {
constexpr std::string_view kSomeString = "blah";
}
#endif // FOO_H_
는 foo::kSomeString
는 foo.h
를 포함하는 모든 번역 단위 내부 연결이 보장되어 있습니까? 이것은 C++ 11과 C++ 17간에 차이가 있습니까? 표준 초안 [basic.link]/3에서
말한다 명시 적으로 extern을 선언하지 않았거나 이전에 외부 연결을 선언했다. [...]
그러나 constexpr
이 "const-qualified"로 간주되는지는 알 수 없습니다. 표준이 어딘가에 그렇게 말합니까?
내부 연결이 보장된다고 가정하면,이 용도로 ODR에 문제가없는 것처럼 보입니다. 맞습니까? (this answer에있는 것과는 대조적으로)
예, 'constexpr'은 선언에서 C++ 11에서'const'를 의미합니다. C++ 14 이상에서는 멤버 함수가 아닌 변수에 대해서만 const를 의미합니다. –
감사! 표준의 어느 섹션에서 그렇게 쓰는지 알고 있습니까? – jacobsa