0
我想知道模板類型是否有'push_back'方法。 我試過了這個例子:Is it possible to write a template to check for a function's existence?在VS2015上用SFINAE在模板上檢查方法存在
我的代碼:
template <typename T>
class has_push_back
{
typedef char one;
typedef long two;
template <typename C> static one test(char[sizeof(&C::push_back)]);
template <typename C> static two test(...);
public:
enum { value = (sizeof(test<T>(0)) == sizeof(char)) };
};
我的電話:
template <typename T>
HTTPMessage Serializer::GetHTTPMessage(T varToSerialize)
{
std::cout << has_push_back<T>::value << std::endl;
//some code
}
不幸的是,我得到這個錯誤時GetHTTPMessage被調用的std :: string:
'重載函數':非法sizeof操作數
注:見參考文獻類模板實例 'has_push_back' 正在編譯 與 [ T =的std :: string ]
我不明白爲什麼它不編譯。
你說得對的事實,VS2015不能正確支持SFINAE ,但我已經用不同的方法解決了我的問題。謝謝。 – Morgan
也許你在這裏發佈它作爲另一個答案呢? – VTT
不,它確實解決了我的問題,但沒有回答我的問題 – Morgan