Kann ich enable_if (oder gibt es eine alternative Technik) mit Template-Variablen verwenden? z.B.variable Vorlagen und std :: enable_if
typedef float Float;
typedef double Double;
template<class T>
constexpr Bool IsFloat = std::is_same_v<T, Float>;
template<class T>
constexpr Bool IsDouble = std::is_same_v<T, Double>;
template<class T>
constexpr Bool IsFloatingPoint = IsFloat<T> || IsDouble<T>;
template<class T>
using EnableIfFloatingPoint = std::enable_if_t<IsFloatingPoint<T>>;
template
<
class T,
typename = EnableIfFloatingPoint<T>
>
constexpr T Pi = T(3.1415926535897932384626433832795);
Visual Studio gibt mir einen Fehler Compiler „zu wenige Argumente Vorlage“ zu sagen, wenn ich versuche Pi<float>
zu verwenden, zum Beispiel.
Wenig verwirrt, warum Sie "IsFloatingPoint" in diesem Beitrag nicht eingeschlossen haben. – WhozCraig
@WhozCraig, denn jetzt gibt es doppelt so viel Code, und das meiste ist irrelevant. – user673679
Das Konzept von SFINAE ist für variable Templates nicht sinnvoll, da sie weder überladen noch teilweise spezialisiert sein können. – Brian