【发布时间】:2021-01-18 06:35:52
【问题描述】:
我正在尝试在我自己的命名空间中重用现有的模板化函数,并出于代码覆盖的原因显式实例化它们。
以下代码使用 gcc 9.3 编译,但不使用 clang 10.0.0 编译
namespace bar {
template<typename T>
T func(T arg){ return arg;};
}
namespace foo {
using bar::func;
}
template int foo::func<int>(int);
int main()
{ }
查看示例here
如果我将模板函数实例化为
template int bar::func<int>(int);
clang 也可以编译。但这不是我想要的。
是否可以使用 clang 跨命名空间显式实例化模板函数?
为什么 gcc 和 clang 给出不同的结果?
【问题讨论】:
标签: c++ templates gcc namespaces clang