小编Tin*_*Tin的帖子

模板变量是否允许在多个翻译单元中并有效合并?

请参阅以下内容:

https://en.cppreference.com/w/cpp/language/definition#One_Definition_Rule

http://eel.is/c++draft/basic.def.odr#12

它声明类模板的多个定义、类模板的静态数据成员、部分模板特化等是允许的,并将作为一个单一的定义。太好了......但它没有在任何地方提到变量模板?

如果我在多个翻译单元中有以下内容:

template<typename T>
T my_data{};

inline void test() {
    my_data<int> = 1;
}
Run Code Online (Sandbox Code Playgroud)

每个翻译单元是否会被赋予自己的定义以my_data生成多个符号,还是将它们全部有效地合并到程序中的单个定义中,其中调用test()一个翻译单元将修改另一个翻译单元的变量?

标准中哪里提到了这种行为?

c++ templates

5
推荐指数
0
解决办法
93
查看次数

标签 统计

c++ ×1

templates ×1