Suchergebnisse für Anfrage "sfinae"

4 die antwort

C ++ 98/03 std :: is_constructible Implementierung

Die Basiskomponenten meiner Hobbybibliothek müssen mit C ++ 98- und C ++ 11-Compilern funktionieren. Um zu lernen und Spaß zu haben, habe ich die C ++ 98-Implementierungen mit verschiedenen Unterstützungsfunktionen erstellt (wie z. B.enable_if, ...

8 die antwort

Verwenden von std :: enable_if mit anonymen Typparametern

Ich versuche @ zu benutzstd::enable_if mit einem unbenutzten und unbenannten Typparameter, um das @ nicht zu verzerrreturn Art. Der folgende Code wird jedoch nicht kompiliert. #include <iostream> template <typename T, typename ...

6 die antwort

SFINAE, um die Basisvorlage zu erstellen, führt immer zu Fehler

So entwerfe ich eine Artmy_numeric_cast -Funktion zum Begrenzen der verfügbaren Konvertierungstypen bei Verwendung eines Frameworks, das ich schreibe. Es war ziemlich einfach, so etwas wie @ zu t template<typename To, typename From> constexpr ...

TOP-Veröffentlichungen

8 die antwort

Wie Mehrdeutigkeiten in überladenen Funktionen mit SFINAE @ behoben werden könn

Ich habe eine unglaublich aufregende Bibliothek, die Punkte übersetzen kann: Sie sollte mit allen Punkttypen funktionieren. template<class T> auto translate_point(T &p, int x, int y) -> decltype(p.x, p.y, void()) { p.x += x; p.y += y; } ...

2 die antwort

Warum dauern die Instanziierungen von Vorlagen hier für immer an?

Im folgenden Code möchte ich @ ersetz template <typename T, typename... Args> auto check (rank<1,T>, Args... args) const -> std::enable_if_t<!has_argument_type<T, Args...>(), decltype(check(rank<2, Ts...>{}, args...))> { return check(rank<2, ...

4 die antwort

SFINAE passiert nicht mit std :: basic_type

Below SFINAE-Code mit verschiedenen Vorlagen lässt sich mit clang 3.7.1, C ++ 14 gut kompilieren: #include <array> #include <iostream> #include <vector> #include <cstdint> enum class Bar : uint8_t { ay, bee, see }; struct S { static void foo() ...

10 die antwort

SFINAE funktioniert bei Typ- und Nicht-Typ-Vorlagenparametern unterschiedlich.

Warum funktioniert dieser Code: template< typename T, std::enable_if_t<std::is_same<T, int>::value, T>* = nullptr> void Add(T) {} template< typename T, std::enable_if_t<!std::is_same<T, int>::value, T>* = nullptr> void Add(T) {}und kann korrekt ...

4 die antwort

Mit `void_t` können Wiederholungsfehler bei mehreren Vererbungstypen erkannt werden.

Ich möchte ein @ implementierhas_no_duplicates<...> Typ Eigenschaft, die zu @ ausgewertet wistd::true_type Wenn die übergebene Liste variabler Typen keine doppelten Typen enthält. static_assert(has_no_duplicates<int, float>{}, ...

4 die antwort

“Anti-SFINAE” ermöglicht eine Überladung, wenn ein gegebener Ausdruck * nicht * wohlgeformt ist

Es ist einfach, SFINAE zu verwenden, um eine bestimmte Funktionsüberladung zu verbergen, wenn ein bestimmter Ausdruck nicht richtig geformt ist. Aber ich möchte das Gegenteil tun und eine Überladung genau dann verbergen, wenn ein gegebener ...

4 die antwort

void_t schlägt in Visual Studio 2015 fehl

Ich verstehe nicht, warum der folgende Test mit Visual Studio 2015 immer fehlschlägt (die static_assert-Trigger): #include <type_traits> using namespace std; template<class T> using try_assign = decltype(declval<T&>() = declval<T const&>()); ...