【发布时间】:2018-06-28 10:21:27
【问题描述】:
我有以下包装类:
template <typename T>
class Remap {
public:
Remap(T *data, int *remap) : data(data), remap(remap){};
T &operator[](std::size_t idx) const { return data[remap[idx]]; }
private:
T *data;
int *remap;
};
如果我这样称呼它,它工作得很好:
Remap<double> remap(data, remap);
其中数据的类型为double *。如果我尝试让编译器(intel icc 15.0.3, with -std=c++11)推断模板类型:
Remap remap(data, remap);
失败并显示错误消息:
argument list for class template "Remap" is missing
我尽量不违反DRY 原则,因此想解决这个问题。
【问题讨论】:
-
升级到C++17,支持类模板参数推导。
标签: c++ c++11 templates c++14 type-deduction