c++ - 如果 'decltype' 是静态的,那么为什么三元运算符在模板的尾随返回类型中起作用?

标签 c++ c++11 templates c++14

在 Josuttis 书中我有这个例子:

template<typename T1, typename T2>
auto max (T1 a, T2 b) -> decltype(b<a?a:b)
{
    return b<a?a:b;
}

但是

b<a

部分属于runtime吧? 那么为什么我们要在decltype中比较它(在模板实例化时找出静态类型)? 它如何在编译时正常工作?

最佳答案

看来你认为decltype(b<a?a:b)产生 a 的类型或 b ,取决于运行时值。它不会,它会生成它们的通用类型。

关于c++ - 如果 'decltype' 是静态的,那么为什么三元运算符在模板的尾随返回类型中起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57817151/

相关文章:

c++ - 使用线程以定时间隔调用函数

c++ - 模板化 [] 或 () 运算符重载 - 可能不使用类型作为参数?

c++ - 模板中关于引用折叠的右值(&&) 左值(&) 引用绑定(bind)的规则是什么?

c++ - 如何在模板中使用嵌套的 typedef?

C++ 关于模板中的泛型初始化

c++ - 在 C++ 项目中嵌入 XML 字符串资源

c++ - 找不到Boost库| C++

c++ - 模板变量的默认返回值

c++ - 带按值参数 & noexcept 的构造函数

c++ - 有没有办法限制访问文件的用户数量