[英]Linker error with variable templates
請考慮以下代碼:
#include <iostream>
template<typename T>
T n;
int main()
{
n<int> = 42;
std::cout << n<int> << std::endl;
}
它編譯並鏈接到g ++ 5.1 ,它顯示42
。 但是,clang ++ 無法鏈接它 :
對n <int>的未定義引用
如果我初始化模板變量,如
template<typename T> T n{};
然后clang ++也鏈接它 。
知道發生了什么事嗎? 如果沒有鏈接程序,clang ++“是否正確”? 如果我初始化模板變量,為什么它可以工作?
據我所知,模板變量只是圍繞靜態成員的模板包裝器的語法糖,因此n<int> = 42
有效地專門化了int
實例。 IMO,代碼應鏈接。
這是clang ++ #22825中的一個錯誤。 錯誤報告已於2015-03-06提交,並且該錯誤尚未修復。 理查德史密斯認為這個定義僅被視為前向聲明。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.