enum class enabler{};
template<typename T>
class X {
template<typename std::enable_if<std::is_class<T>::value,enabler>::type = enabler()>
void func();
void func(int a);
void func(std::string b);
};
我有這個類與這些3過載func
。我需要第二個/第三個版本可用於類/非類類型,並且第一個版本僅適用於類類型。當我如上所述嘗試使用enable_if
時,非類類型的類實例化會導致編譯錯誤。如何使用enable_if與過載
SFINAE只適用於*推導*類型。 –
能否詳細說明一下? – mkmostafa
你實際上並不需要使用sfinae。你的情況下'static_assert'已經足夠了。在我的(晚)答案中看到最小的例子。 – skypjack