【发布时间】:2017-08-14 00:28:21
【问题描述】:
如果我有一个标题foo.h,其中包含
#ifndef FOO_H_
#define FOO_H_
namespace foo {
constexpr std::string_view kSomeString = "blah";
}
#endif // FOO_H_
那么在单个程序中包含多个.cc 文件中的foo.h 是否安全,无论它们如何处理符号kSomeString,或者是否有某些用途可能导致违反ODR?
另外,是否保证kSomeString.data() 将在.cc 文件中返回相同的指针?
如果可能,我想具体参考C++ standard 中的措辞。谢谢!
【问题讨论】:
-
这与
string_view具体有什么关系? -
大部分问题通常是关于标题中的
constexpr声明,但在使用 C 字符串进行初始化时可能存在一些特殊问题,这些问题不适用于例如constexpr int.
标签: c++ language-lawyer c++17 linkage one-definition-rule