我已经阅读了很多关于推导变量类型的帖子,两者都使用auto和without。我想我有两个问题。
让我们以一个简单的范围函数为例。我可以把它作为模板并调用它:
template <class T, T min, T max> bool inRange(T value) {
return min <= value && value <= max;
}
bool bbb = inRange<int, 5, 10>(7);
或者我能做到:
template <class T> bool inRange(T min, T max, T value) {
return min <= value && value <= max;
}
bool bbb = inRange(5, 10, 7);
问题:
是否存在一种方法(缺少为short,int,long,double等创建多个模板1),可以推导出类型,以便可以使用inRange<min, max>(value)
调用模板
inRange<min, max>(value)
inRange(min, max, value)
是否有任何优势
醇>
答案 0 :(得分:1)
inRange<T, min, max>(value)
相当尴尬,因为我们还没有实施上述提案而且无法写inRange<min, max>(value)
。如果在编译时不知道min和max,则无论如何第二种方法inRange(min, max, value)
是您唯一的选择。第二类内联函数应该与第一类函数一样高效,因此几乎没有任何优势。