我在声明一个使用的函数时遇到了一些麻烦boost::enable_if
:以下代码给了我一个编译器错误:
// Declaration
template <typename T>
void foo(T t);
// Definition
template <typename T>
typename boost::enable_if<boost::is_same<T, int> >::type foo(T t)
{
}
int main()
{
foo(12);
return 0;
}
编译时,我收到“对 foo 的模糊调用”错误。根据 的定义enable_if
,'type' typedef 对应于void
条件为真时,所以据我所知,foo
匹配的两个签名。为什么编译器认为它们不同,是否有正确的转发声明方法foo
(最好不重复该enable_if
部分)?