在 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/