c++ - 如何使用 C++ 11 的 using 模板函数关键字来删除作用域中的 namespace

标签 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 方法可以为命名空间中的函数创建一个缩短的别名?

最佳答案

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

关于c++ - 如何使用 C++ 11 的 using 模板函数关键字来删除作用域中的 namespace ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35105812/

相关文章:

c++ - rdstate() 返回值是什么意思?

c++ - C++11 中的非类型可变参数函数模板

c++ - 关于 vector 的考虑

c++ - 如何在 Thrift 客户端中使用我们自己的 I/O 框架?

c++ - 强制 sscanf 返回超过满足数量的参数

c++ - 程序图标的问题

c++ - 使用不同的编译器计算 std::hash

c++ - 编译我的 C++ 代码需要很长时间

C++ 字符串文字和常量

c++ - 使用 std::atomic<int> 安全地连接到程序结构以进行线程访问?