gpt4 book ai didi

c++ - 使用模板与函数的好处以及如何推断模板中的类型

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:16:36 25 4
gpt4 key购买 nike

我已经阅读了很多关于推导变量类型的文章,包括使用 auto 和不使用 auto 的。我想我有两个问题。

让我们以一个简单的范围函数为例。我可以将其设为模板并调用它:

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);

问题:

  1. 有没有一种方法(除了为 short、int、long、double 等创建多个模板,每个模板 1)可以推断类型,以便可以使用 inRange<min, max>(value) 调用模板

  2. inRange<min, max>(value)有什么优势吗?关于inRange(min, max, value)

最佳答案

  1. 暂时没有。有提议将其添加到 C++ 的 future 版本中:http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4469.html
  2. 第一种方法inRange<T, min, max>(value)相当尴尬,因为我们还没有实现上述提案,不能写 inRange<min, max>(value) .如果在编译时不知道 min 和 max,则第二种方法 inRange(min, max, value)无论如何是你唯一的选择。第二种内联函数应该与第一种一样高效,因此几乎没有任何优势。

关于c++ - 使用模板与函数的好处以及如何推断模板中的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31502019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com