Also, bin ich das durch den Code irgendwo auf dieser Web-Seite setzt Beispiel folgende: http://eli.thegreenplace.net/2014/sfinae-and-enable_if/SFINAE: std :: enable_if als Funktionsargument
Hier ist, was ich habe:
template<typename T>
void fun(const typename std::enable_if_t<std::is_integral<T>::value, T>& val) {
std::cout << "fun<int>";
}
template<typename T>
void fun(const typename std::enable_if_t<std::is_floating_point<T>::value, T>& val) {
std::cout << "fun<float>";
}
int main()
{
fun(4);
fun(4.4);
}
Auf diese Weise Ich müsste schreiben:
fun<int>(4);
fun<double>(4.4);
Wie würde ich das vermeiden?
Compiler beschwert sich, dass es den Parameter T
nicht ableiten kann.
Ich sehe. Wie würde das in einem Konstruktor funktionieren, der keinen Rückgabetyp hat? – DeiDei
@DeiDei siehe das Update –
Was ist die Bedeutung der Verwendung von 'int' als zweites Argument von' std :: enable_if'? Ist es willkürlich? Oder liegt es daran, dass "int = 0" sicher ist? – Jacob