考虑以下代码:
struct foo
{
static constexpr int value = 42;
};
void bar(const int* value) { std::cout << *value; }
int main() { bar(&foo::value); }
Run Code Online (Sandbox Code Playgroud)
编译没有问题,并没有在警告夫妇的在线编译器我试过了.鉴于没有.cpp定义该constexpr值的单个文件,如果bar从不同的编译单元调用该方法,指针的值是否可以不同?或者标准是否保证值最终只在所有编译单元中分配一次(即隐式_declspec(selectany))?
它对我不起作用 - 我收到链接器错误.http://coliru.stacked-crooked.com/a/59e2cf56122733d0
如果你没有使用静态constexpr成员,你可以想象它在任何需要的地方内联,并且不存在于任何编译单元中.如果你不 ODR使用它,因为你在程序中所做的那样,你必须定义它.
| 归档时间: |
|
| 查看次数: |
224 次 |
| 最近记录: |