【发布时间】:2012-04-09 18:52:07
【问题描述】:
假设我在命名空间A中有一个模板函数。我还有另一个命名空间B。在命名空间A中声明了一个模板函数,定义为
template<typename T, typename U>
void f(T a, U b);
现在在命名空间 B 中,我想声明模板函数的特殊类型。我在想我是否可以 typedef 模板函数,所以它在命名空间 B 中声明为
void f(int a, double b);
没有实际实现调用模板函数的函数。由于有一种方法可以用特定的模板参数声明新的类型名,难道不应该有一种方法可以用函数来做到这一点吗? 我尝试了不同的方法来实现它,但效果并不理想。
那么在 C++ 中是否已经有一种方法可以用给定的模板参数重新声明函数而不实际实现新函数?如果没有,在 C++11 中是否可以以某种方式实现?
这将是一个简洁的功能,因为它会使函数的目的更清晰,并且在语法上会更好:)
编辑:所以可以写:
using A::f<int, double>;
在 B 命名空间中,函数将显示这些模板参数
【问题讨论】:
-
不太确定是否支持,因为当前版本的 Visual c++ 似乎不支持使用语法(?)。至少对我来说,它只是输出了大量的语法错误
-
编译器也必须支持该功能。我认为 GCC 还没有。