typetraits

Jak działa "is base of"?

Jak działa poniższy kod? typedef char (&yes)[1]; typedef char (&no)[2]; template <typename B, typename D> str ... es check(B*, int); ? Uwaga: jest to wersja skrócona (makra są usuwane) boost::is_base_of. Działa to na wielu kompilatorach.

Jaka jest różnica między cechą a polisą?

Mam klasę, której zachowanie próbuję skonfigurować. template<int ModeT, bool IsAsync, bool IsReentrant> ServerTraits; ... nazwane? Czy mój parametr template rzeczywiście jest polityką, a nie cechą? Kiedy argument szablonowy to cecha a polityka?

Sprawdzanie istnienia członka, ewentualnie w klasie bazowej, w wersji C++11

W https://stackoverflow.com/a/1967183/134841 , rozwiązanie jest przewidziane do statycznego sprawdzania, czy dany element is ... ses. Czy istnieje implementacja tej metafunkcji, która znajduje reserved() w baseclasses of T and still works if T is final?

Dlaczego nie ma std:: is struct type trait?

Widziałem to w celu sprawdzenia, czy typ T jest klasą, której mogę użyć: bool isClass = std::is_class<T>::value; Zw ... w cechach typu. Czy zawsze jest bezużyteczne sprawdzanie tej różnicy, czy jest jeszcze jakiś powód, dla którego nie rozumiem?

Jak przełączać / wybierać typy podczas kompilacji?

Czy istnieje standardowy sposób na wybranie typu w czasie kompilacji na niepodpisanym indeksie w c++11? Na przykład coś w ... type_1 = static_switch<1,T,U>; // yields type U Jeśli istnieje wersja variadic-template, byłoby to bardzo przydatne.

trivial vs. standard layout vs. POD

W kategoriach laika, jaka jest różnica między typami trywialnymi, typami standardowych układów i PODs? W szczególności chcę ... inienem wybrać? (jako pytanie poboczne, czy którakolwiek z tych cech typu może być zaimplementowana bez magii kompilatora?)

Dowiedz się, czy obiekt C++ można wywołać

Czy jest możliwe napisanie cechy typu, powiedzmy is_callable<T>, która mówi, czy obiekt ma zdefiniowaną operator()? Jes ... Również std::is_function działa, ale tylko na właściwym Funkcje C++, nie na funktorach. Szukam bardziej ogólnego rozwiązania.

Co Kompilatory robią z rozgałęzieniami w czasie kompilacji?

EDIT: wziąłem przypadek "if / else" jako przykład, który czasami może być rozwiązany w czasie kompilacji(np. gdy chodzi o wa ... pszy od drugiego? Czy istnieją inne (być może lepsze) rozwiązania, które poradzą sobie z rozgałęzieniami w czasie kompilacji?

sprawdź, czy obiekt C++ można wywołać

Czy jest możliwe napisanie cechy typu, powiedzmy is_callable<T>, która mówi, czy obiekt ma zdefiniowaną operator()? Jes ... nt). Ponadto std::is_function działa tylko na funkcjach rzeczywistych, a nie funkcjach, Szukam bardziej ogólnego rozwiązania.

Sprawdzić, czy typ zmiennej jest iterowalny?

Czy Jest jakiś sposób, aby sprawdzić, czy dowolny typ zmiennej jest iterowalny? Więc, aby sprawdzić, czy ma indeksowane ele ... ? Znalazłem techniki dla innych języków programowania, szukając go. Jednak nadal trzeba dowiedzieć się, jak to zrobić w C++.

Sprawdzanie instancji szablonu czas kompilacji

Czy jest możliwe sprawdzenie, czy typ szablonu został utworzony w czasie kompilacji, abym mógł użyć tych informacji w specjal ... gę jakoś zdefiniować jakiś is_known_type, którego wartość jest prawdziwa, jeśli known_type jest instancją podczas kompilacji?

Typ trait, aby sprawdzić, czy wszystkie typy w pakiecie parametrów są kopiowalne

Potrzebuję cechy typu, aby sprawdzić, czy wszystkie typy w pakiecie parametrów są kopiowalne. To jest to, co zrobiłem do tej ... enable-jeśli po parametr pack w liście szablonów nie działa. Nie mam pojęcia. Czy ktoś ma dobrą radę, jak rozwiązać problem?

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?

C++11 to ten sam typ dla szablonów

Czy jest możliwe sprawdzenie, czy typ T jest std::array dowolnego typu i rozmiaru? Mogę sprawdzić dla konkretnej tablicy, na ... mpiluje się): is_same<T, std::array>::value Czy jest jakiś sposób, aby to osiągnąć (może nie używając is_same)?

Które nie mogą być zaimplementowane bez hooków kompilatora?

C++11 zapewnia standard <type_traits>. Które z nich są niemożliwe do zaimplementowania bez hooków kompilatora? Uwa ... e N2984 gdzie niektóre cechy typu zawierają następującą notatkę: uważa się, że wymaga wsparcia kompilatora (dzięki sehe).

Dobre praktyki dotyczące specjalizacji i dziedziczenia szablonów

Specjalizacja szablonu nie uwzględnia hierarchii dziedziczenia. Na przykład, jeśli specjalizuję szablon dla Base i inicjuję g ... void f() { std::cout << "Base" << std::endl; } }; int main() { Foo<Derived>::f(); // prints "Base" }

Sprawdzanie cech wszystkich zmiennych argumentów szablonu

Background: utworzyłem następującą klasę C, której konstruktor powinien przyjmować N zmienne typu B&: class A; class B ... dwa instancje (z C<2>::C<B1, B1> i C<2>::C<B1, B2>)? Chcę tylko instancji C<2>::C<B, B>.

Disambiguate overloaded member function pointer being passed as template parameter

Próbuję odtworzyć Wzór obserwatora Gdzie mogę doskonale przekazać parametry do danej funkcji członka obserwatorów. Jeśli s ... zę, że mogę to zrobić za pomocą pakietu zmiennych parametrów szablonu? Jak mogę sprawić, by argument szablonu działał tutaj?

Czym jest decltype z dwoma argumentami?

Edit, w celu uniknięcia nieporozumień: decltype Czy Nie akceptuje dwa argumenty. Zobacz odpowiedzi. Następujące dwie s ... mi działa inaczej niż myślałem. Nie mogłem znaleźć żadnej dokumentacji, wszędzie jest to wyjaśnione tylko jednym wyrażeniem.

Jak używać STD:: is integral< > do wyboru implementacji?

Próbuję zwrócić int64_t Jeśli std::is_integral<>::value jest prawdą. W przeciwnym razie chciałbym wywołać to_int64t() ... const T& t ) { return t.to_int64t(); } int main() { int64_t i = 64; auto x = to_int64t( i ); }