如何使用C ++ 11使用关键字for template function来删除作用域中的命名空间

时间:2016-01-30 19:02:25

标签: c++ c++11

我有一个模板功能:

namespace Example
{
template<class T>
T Foo() { return T(0); };
}

我想使用using语句或类似语句,以便在调用它时不必在函数名称前加上它的名称空间,即

template<class T> using Foo = Example::Foo<T>;

然而这不起作用。

想要使用以下方法,因为它会包含命名空间Example中的所有内容:

using namespace Example;

是否有一种不错的C ++ 11方法可以为命名空间中的函数创建缩短的别名?

1 个答案:

答案 0 :(得分:4)

对于任何符号,您都可以using Example::Foo;。这可以在命名空间作用域或函数作用域中使用(这实际上存在于C ++ 98中,它在C ++ 11中不是新的)。您尝试执行的方法仅适用于类型,而Foo是一个函数。