c++ - 是否可以为模板类的模板函数成员起别名?

标签 c++ c++11 templates

有没有办法给模板类的函数模板成员起别名?

举个例子

template<typename T, int ndim>
class Point
{
  // ... stuff

  template<int index>
  T get() const;   
}

而不是使用 p.get<0>()确实存在一种声明别名的方法,例如

using getX() =  template<typaname T, ndim> Point<T,ndim>::get<0>()
p.getX() // call p.get<0>()

?

我知道我可以写一个 enable_if getX包装 get<0>()如果 ndims 启用匹配它。我想知道是否存在通过别名的方法。

最佳答案

函数没有别名,但您可以创建“类似”的代码:

  • lambda 或函数助手:

    auto getX = [](const auto& p) { return p.get<0>(); };
    getX(p);
    
  • 成员函数指针:

    auto getX = &Point<float, 3>::get<0>;
    (p.*getX)();
    

关于c++ - 是否可以为模板类的模板函数成员起别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50932239/

相关文章:

c++ - 模板类的树,其中 chilldren 是 std::array of std::unique_ptr

c++ - 从头开始设计业务消息解析器/重写

templates - 在 golang 模板中迭代 Map/Dictionary

c++ - 如何检查 std::thread 是否有效

c++ - 打开 Qt C++ 项目

c++ - OpenCV:检查cv::Point是否已设置值

c++ - C++11 中带有虚拟成员的虚拟析构函数

c++ - 具有一半大小帮助 vector 的归并排序

c++ - 为什么不允许全局命名空间的 block 作用域?

c++ - 类模板、矩阵和加法