我有下面的代碼不能編譯。 這是一個模板類,它的參數模板方法enable_if專業化
typename std::enable_if<std::is_void<Ret>::value, Ret>::type _on_dispatched() {
// ...
}
typename std::enable_if<!std::is_void<Ret>::value, Ret>::type _on_dispatched() {
// ....
}
我想有根據懲戒是什麼類型的成員方法的專業化兩種功能。
有沒有人有一些想法?
你可以,如果重載之一是在調用時是唯一可行的。 :) http://liveworkspace.org/code/fd6e5383610d4e0d8fb17c5497991355 – Xeo 2012-08-17 08:46:38
@Patatoswatter:其實,不,這不是一個笑話。看到鏈接,你完全可以擁有一個完全相同的簽名功能,只有返回類型決定它是否可行。 :P另外,只需使用'std :: is_void()',類型特徵就需要從'std :: true_type'或'std :: false_type'派生。 –
Xeo
2012-08-17 09:08:53
順便說一句,[你可以使用C++ 11中的默認參數使成員函數成爲模板](http://liveworkspace.org/code/781d94df5499998947217970c1aebf2a)。 – Xeo 2012-08-17 09:15:36