decltype的模板参数数量不正确。

时间:2018-02-28 01:00:06

标签: c++ c++11

在编译时,在下面的程序中抱怨应该有2个模板参数,但只有1个。

template<typename T, typename U = T, 
    typename = std::enable_if<std::is_convertible<std::decltype(int()), int>::value>::type>
void func(T t, U u){}

但是下面的代码编译,

template<typename T, typename U = T, 
    typename = std::enable_if<std::is_convertible<int, int>::value>::type>
void func(T t, U u){}

我想知道两者之间有什么区别以及如何编译这段代码。

1 个答案:

答案 0 :(得分:3)

decltype是一个关键字,而不是一个函数;你解密了你的解析器。放下std::

live demo

相关问题