我有一個泛型類,帶有一個函數,我只想在編譯時限制爲浮點類型的實例。如下例所示:訪問函數的限制
template <typename T>
class ClassName
{
// instance variables, etc..
void some_method()
{
// do stuff, but only for floating point types
}
}
如何使編譯器拒絕some_method用於非浮點類型的ClassName?
我一直在尋找SFINAE,但我根本無法得到它的工作,所以經過幾個小時的失敗,我要求你的幫助。
謝謝:)
你試過了什麼?你可以用['std :: is_floating_point'](http://en.cppreference.com/w/cpp/types/is_floating_point)和['std :: enable_if'](http:// en。 cppreference.com/w/cpp/types/enable_if)。 – juanchopanza
目前我正在包裝功能在另一個功能,如下所示: 'void some_other_method(){some_method(std :: is_floating_point()); }' 'void some_method(){}' 這有效,但我想要一個解決方案,我不必包裝功能。 –
Jesper
@juanchopanza儘管你使'some_method'成爲模板,你可以使你的例子工作。我正在尋找一個解釋此處危險機制的先前答案。 –