【发布时间】:2019-08-29 06:55:07
【问题描述】:
using 用于类模板就像一个魅力
template<class T,int N>
struct VecNT{ T arr[N]; };
using Vec5d = VecNT<double,5>; // doing great job!
但它似乎根本不适用于函数
template<class T,int N>
T sumNT(T* xs){ T sum=0; for(int i=0;i<N;i++){sum+=xs[i];}; return sum; };
using sum5d = sumNT<double,5>;
// ERROR: sumNT<double,5> does not name a type
using sum5d(double* xs) = sumNT<double,5>(T* xs);
// ERROR: expected nest-name-specifier before 'sum5d'
那么如何将sum5d 设为sumNT<double,5> 的专用/实例化别名?
【问题讨论】:
-
你试过吗?
auto sum5d = &sumNT<double,5>;?这应该会生成一个函数指针,然后可以像函数 ID 一样使用它。 (或double (*sum5d)(double*) = &sumNT<double,5>;?)
标签: c++ templates c++17 template-instantiation