【发布时间】:2017-08-23 05:44:58
【问题描述】:
鉴于这段代码:
#include <type_traits>
template<typename T>
auto sqr(typename std::conditional<sizeof(T) <= sizeof(int), T, const T&>::type a)
{return a*a;}
int main(void)
{
auto x = sqr<int>(10); //works
auto y = sqr(10); //ERROR: couldn't deduce template parameter 'T'
}
调用sqr(10)时自动扣型失败是什么原因?有没有一种方法可以在不明确定义类型的情况下调用sqr()?
【问题讨论】:
-
在查看参数推导时考虑“模式匹配”。
int如何匹配std::conditionl<>::type模式?
标签: c++ c++11 templates type-conversion c++14