有沒有一種方法可以要求模板類型具有屬性?在C++中鍵入鴨子的模板
例如:
template <typename T, typename U>
void foo()
{
U a,b;
bool truthiness = T()(a,b);
if (truthiness)
// do something
}
那麼,如何將要求T
已在operator()(U a, U b)
定義,它返回一個特定類型的?這可能嗎? (我知道它在D中,但我不確定C++)。
ps。如果鴨子打字在這裏是錯誤的,讓我知道,我相信這是正確的,但我不確定。
問題是,如果它沒有那個操作符,你想要發生什麼?不考慮語法錯誤,你會得到一個編譯器錯誤 - 你還想要什麼? – ildjarn
這就是(概念)應該提供的(部分) - 一種直接的方式來指定模板可以被實例化的類型的需求。不幸的是,儘管做了很多工作,但沒有達到標準。 –
查看SFINAE,這是專門爲此目的而設計的技術。 –