Sta*_*ght 3 c++ templates c++17
此代码示例正常工作并完成它应该执行的操作.
template <typename T>
struct base {
base(T a) {};
};
struct b : public base<int> {
b() : base(3) {};
};
Run Code Online (Sandbox Code Playgroud)
我想利用构造函数中的自动演绎模板参数来使用C++ 17特性,并执行以下操作:
struct b : public base { // note lack of <int>
b() : base(3) {};
};
Run Code Online (Sandbox Code Playgroud)
没有一些丑陋的黑客可能吗?
Sto*_*ica 12
模板参数推导规则不允许它.他们不太可能会这样做.考虑一下:
struct b : public base { // note lack of <int>
b() : base(3) {}
b(int) : base(false) {}
};
Run Code Online (Sandbox Code Playgroud)
b现在的基类是什么?有人可能会争辩说,如果基类的所有初始化都对类型达成一致是可行的.但是在实践中很难检查它(想想c'tors所在的单独的目标文件),而且IMO似乎太过于有用了.
因此,总而言之,您无法避免为基类模板指定模板参数.
| 归档时间: |
|
| 查看次数: |
116 次 |
| 最近记录: |