gpt4 book ai didi

c++ - 变量模板的链接器错误

转载 作者:可可西里 更新时间:2023-11-01 15:22:58 25 4
gpt4 key购买 nike

考虑下面的代码:

#include <iostream>

template<typename T>
T n;

int main()
{
n<int> = 42;
std::cout << n<int> << std::endl;
}

compiles and links with g++5.1 , 并显示 42 .但是,clang++ fails to link it :

undefined reference to n<int>

如果我像这样初始化模板变量

template<typename T> T n{};

然后 clang++ links it too .

知道发生了什么事吗? clang++ 未能链接程序是否“正确”?如果我初始化模板变量,为什么它会起作用?

据我所知,模板变量只是静态成员周围模板包装器的语法糖,所以 n<int> = 42有效地专门化了 int实例。 IMO,代码应该链接。

最佳答案

这是 clang++ 中的错误 #22825 .错误报告已于 2015-03-06 提交,错误尚未修复。 Richard Smith 认为此定义仅被错误地视为前向声明。

关于c++ - 变量模板的链接器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30896500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com