0
這裏是我想要達到的MCVE:爲什麼我的SFINAE開關不工作?
#include <limits>
#include <iostream>
// enable_if (I'm stuck with a c++98 compiler)
template<bool B, class T = void> struct enable_if {};
template<class T> struct enable_if<true, T> { typedef T type; };
// sfinae
template<typename T> const char*
f(typename enable_if<std::numeric_limits<T>::is_integer, T>::type t) { return "sfinae"; }
template<typename T> const char*
f(T t) { return ""; }
// test
int main()
{
std::cout << f(3) << "\n"; // returns an empty string
std::cout << f(3.0) << "\n"; // returns an empty string
}
我期待調用f(3)
返回"sfinae"
。我究竟做錯了什麼?
對於第一個要調用的版本,我必須手動調用f<int>(3)
。我很困惑。
事實上(感謝),但爲什麼呢? – YSC
編輯說明... –
@YSC:完成,有幫助嗎? –