sfinae

Template check for the existing of a class member function?

Czy jest możliwe napisanie szablonu, który zmienia zachowanie w zależności od tego, czy określona funkcja członkowska jest zd ... ring(), to używa jej; w przeciwnym razie nie. magiczną częścią, której Nie wiem, jak to zrobić, jest część "FUNCTION_EXISTS".

Jak dodać reflection do aplikacji C++?

Chciałbym mieć możliwość introspekcji klasy C++ pod kątem jej nazwy, zawartości (tj. członków i ich typów) itp. Mówię tu o na ... h ograniczonych informacji za pomocą RTTI. Jakie dodatkowe biblioteki (lub inne techniki) mogłyby dostarczyć tych informacji?

Dlaczego powinienem unikać std:: enable if in function signatures

Scott Meyers opublikował treść i status swojej kolejnej książki EC++11. Napisał, że jedną z pozycji w książce może być "Avo ... ią zwykłej sygnatury funkcji, ale specjalizacji szablonu)? czy są jakieś różnice dla szablonów funkcji member i non-member?

Sprawdź, czy klasa ma funkcję członka danego podpisu

Proszę o trick szablonu do wykrycia czy klasa ma określoną funkcję członka danej sygnatury. Problem jest podobny do przytocz ... alną funkcję zdefiniowaną w jednej przestrzeni nazw, gdy jestem w innej) Możesz mi podpowiedzieć, jak rozwiązać tę zagadkę?

Przykłady C++ SFINAE?

Chcę przejść do meta-programowania szablonów. Wiem, że SFINAE oznacza " niepowodzenie zastępcze nie jest błędem."Ale czy ktoś może mi pokazać dobry użytek z SFINAE?

Jak działa "void t"

Oglądałem wykład Waltera Browna na Cppcon14 o nowoczesnym programowaniu szablonów ( Część I, Część II), gdzie zaprezentował s ... id_t, aby działał. Dlaczego? (Nie rozumiem, dlaczego te typy muszą pasować, nie tylko jakiś domyślny typ wykonuje zadanie?)

Jak wykryć, czy w klasie jest określona zmienna członkowska?

Do tworzenia funkcji szablonu algorytmu muszę wiedzieć, czy x lub X (i y lub Y) w klasie, która jest argumentem szablonu. Moż ... z nieznanymi członkami. P. S. Proszę, nie umieszczaj tutaj rozwiązań C++11, ponieważ są oczywiste i nieistotne dla pytania.

Wyjaśnij C++ programistom spoza C++

Co to jest SFINAE w C++? Czy możesz to wyjaśnić słowami zrozumiałymi dla programisty, który nie jest zaznajomiony z C++? Ponadto, jakie pojęcie w języku takim jak Python odpowiada SFINAE?

SFINAE do sprawdzania funkcji dziedzicznych członków

Używając SFINAE, i może wykryć że dana klasa ma określoną funkcję członkowską. Ale co jeśli chcę przetestować odziedziczone ... t;B, void (B::*)()>::value << endl; // false } Czy jest sposób na sprawdzenie dziedzicznych funkcji Członkowskich?

Co to jest "Expression SFINAE"?

At http://blogs.msdn.com/b/vcblog/archive/2011/09/12/10209291.aspx , zespół VC++ oficjalnie oświadcza, że nie zaimplementowa ... X x3 = f(x1, x2); // deduction fails on #1 (cannot add X+X), calls #2 Moje pytanie brzmi: Co to jest "Expression SFINAE"?

Jak wywołać funkcję szablonową, jeśli istnieje, i coś innego w przeciwnym razie?

Chcę zrobić coś takiego template <typename T> void foo(const T& t) { IF bar(t) would compile bar(t); ... tutaj, dzieląc foo na dwie części, ale nie mogę Dopracować szczegółów. Jaki jest najprostszy sposób na osiągnięcie tego celu?

Jak sprawdzić czy operator = = istnieje?

Próbuję stworzyć przykład, który sprawdziłby istnienie operator== (funkcja member or, non-member). Sprawdzenie, czy klasa ma ... nst C&,constC&) = &operator== ); Ale kompilacja nie powiedzie się, jeśli nie-członek operator= = jest usunięty

SFINAE z nieprawidłowymi parametrami typu function czy array?

Proszę wziąć pod uwagę ten kod: template<typename T> char (&f(T[1]))[1]; template<typename T> char (&f ... tencję wszystkich tych tajemniczych akapitów i wydaje się, że powyższy kod powinien działać i odrzucić pierwsze przeciążenie.

Jak wykryć, czy metoda jest wirtualna?

Starałem się zrobić cechę, aby znaleźć, czy metoda jest virtual: (https://ideone.com/9pfaCZ ) // Seveval structs which shou ... ji, ale check nie jest odrzucany dla typu " zły " w SFINAE :( . Jaki jest właściwy sposób wykrycia, czy metoda jest virtual?

Kiedy używać `static assert ' zamiast SFINAE?

Używałem (i widziałem używane) static_assert do oznaczania niepożądanych wartości parametrów szablonu. Jednak we wszystkich p ... static_assert ma zaletę jaśniejszego Komunikatu o błędzie kompilatora, który niektórzy uważają za główny cel każdego z nich.

Select class constructor using enable if

Rozważ następujący kod: #include <iostream> #include <type_traits> template <typename T> struct A { ... takiego jest możliwe dla konstruktora? Czy jest to możliwe z innym konstruktorem (Kopiuj-konstruktor i przenieś-konstruktor)?

SFINAE działa w typie return, ale nie jako parametr szablonu

Używałem idiomu SFINAE już kilka razy i przyzwyczaiłem się do umieszczania std::enable_if<> w parametrach szablonu, a n ... typename std::enable_if<std::is_integral<T>::value>::type> ^ EDIT : Kod roboczy i kod wadliwy.

Wykrywanie constexpr z SFINAE

Pracuję nad uaktualnieniem kodu C++, aby wykorzystać nową funkcjonalność w C++11. Mam klasę cech z kilkoma funkcjami zwracają ... o działa, ale chciałbym wiedzieć, czy kod jest legalny w C++11. Zwłaszcza, że jak rozumiem zasady dla SFINAE uległy zmianie.

Jeśli adres funkcji nie może być rozwiązany podczas dedukcji, to jest to SFINAE lub Błąd kompilatora?

W C++0x reguły SFINAE zostały uproszczone tak, że jakiekolwiek nieprawidłowe wyrażenie lub typ występujące w "bezpośrednim ko ... tać? Czy Kompilatory źle odrzucają ten kod? Czy" bezpośredni kontekst " dedukcji musi być nieco lepiej zdefiniowany? Dzięki!

Wykrywanie obsługi operatora za pomocą decltype/SFINAE

A (nieco) przestarzały Artykuł bada sposoby użycia decltype wraz z SFINAE do wykrywania, czy typ obsługuje pewne operatory, t ... wykazywały to samo zachowanie. Czy możliwe jest użycie SFINAE w ten sposób, aby wykryć, czy typ obsługuje pewne wyrażenia?