【发布时间】:2009-01-29 15:17:10
【问题描述】:
假设我有
template< unsigned int num >
class SomeFunctionality
{
static unsigned int DoSomething()
{
//...
}
static void DoSomethingElse()
{
}
};
typedef SomeFunctionality<6> SomeFunctionalityFor6;
从语义上讲,“SomeFunctionalityFor6”本质上是一个特定于模板参数的命名空间,6。所以在代码中使用模板的这个实例而不是做
int main()
{
SomeFunctionalityFor6::DoSomething();
}
我宁愿能够使用“使用”语句作为真正的命名空间
int main()
{
using SomeFunctionalityFor6;
DoSomething();
}
我怀疑这行不通。 Visual Studio 抱怨它想要一个由“命名空间”关键字定义的命名空间,跟在任何 using 语句之后。
有什么办法可以做我想做的事吗?主要是我不想每次调用静态方法时都完全限定命名空间。我知道它主要只是语法糖,但在我看来它可以使代码更具可读性。我想知道是否有办法直接模板化命名空间,而不必使用“class”关键字。
【问题讨论】:
标签: c++ templates namespaces using