C++: std::enable_if und std::is_floating_point Minimalbeispiel

English Deutsch

Siehe auch std::enable_if Minimalbeispiel und std::enable_if und std::is_same Minimalbeispiel

Beispiel für eine Template-Funktion, die nur aktiviert wird, wenn das Template-Argument T ein beliebiger Gleitkomma-Typ ist, unter Verwendung von std::enable_if und std::is_floating_point:

enable_if_example.cpp
template<typename T, typename std::enable_if<std::is_floating_point<T>::value>::type* = nullptr>
T mySineFloatingPointOnly(T arg) {
    return sin(arg);
}

Vollständiges Beispiel:

enable_if_full_example.cpp
#include <iostream>
#include <type_traits>
#include <cmath>

using std::cout;
using std::endl;

template<typename T>
T mySine(T arg) {
    return sin(arg);
}

template<typename T, typename std::enable_if<std::is_floating_point<T>::value>::type* = nullptr>
T mySineFloatingPointOnly(T arg) {
    return sin(arg);
}

int main() {
    cout << mySine(1.5) << endl;
    // mySine(1) funktioniert
    // mySineFloatingPointOnly(1) führt zu Kompilierfehler
    cout << mySineFloatingPointOnly(1.5) << endl;
}

Check out similar posts by category: C/C++