gpt4 book ai didi

c++ - 主函数中的显式模板实例化

转载 作者:搜寻专家 更新时间:2023-10-31 02:11:18 24 4
gpt4 key购买 nike

我有一些玩具代码如下:

#include <iostream>

using namespace std;
template<typename T>
class MyClass{
T t;
};
template class MyClass<int>;
int main()
{
//template class MyClass<int>;
return 0;
}

和:

#include <iostream>

using namespace std;
template<typename T>
class MyClass{
T t;
};
//template class MyClass<int>;
int main()
{
template class MyClass<int>;
return 0;
}

template class MyClass<int>;在 main() 函数中不起作用。错误是错误:'模板'之前的预期主表达式但是 main() 函数之外的相同语句有效。为什么会这样?

最佳答案

我认为 14.7.2 [temp.explicit] 第 3 段中的这条语句意味着显式模板实例化必须出现在命名空间范围内:

... An explicit instantiation shall appear in an enclosing namespace of its template. ...

这意味着您不能使用函数区域设置类型显式实例化模板。由于显式模板实例化的目的是避免重复使用少数类型的模板的多个实例化,例如,实例化流类型,因此此限制不是约束。

关于c++ - 主函数中的显式模板实例化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43827514/

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