template-meta-programming

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".

Szablony C++ Turing-kompletne?

Powiedziano mi, że system szablonów w C++ jest Turing-complete w czasie kompilacji. Jest to wspomniane w tym poście, a także ... ii. Czy możesz podać nietrywialny przykład obliczeń wykorzystujących tę właściwość? Czy ten fakt jest przydatny w praktyce?

Jak można iterować nad elementami STD:: tuple?

Jak mogę iterację nad krotką (używając C++11)? Próbowałem: for(int i=0; i<std::tuple_size<T...>::value; ++i) st ... umentów o stałej długości. Błąd 2: nie mogę pojawić się w wyrażeniu stałym. Więc, jak poprawnie iterować elementy krotki?

Jak wykonać ogólne obliczenia nad heterogenicznymi pakietami argumentów zmiennej funkcji szablonu?

Założenie: Po zabawie z różnymi szablonami, zdałem sobie sprawę, że osiągnięcie wszystkiego, co wykracza nieco poza trywia ... ie poprzez meta-programowanie szablonów, aby osiągnąć to, czym jestem szukasz bez ponoszenia ograniczeń istniejących podejść?

void t "czy można wdrażać koncepcje"?

Oglądałem drugą częśćrozmowy Waltera Browna CppCon2014 na temat metaprogramowania szablonów , podczas której omawiał zastosow ... du rozmowy, rozumiem, jak ten przykład działa, ale nie widzę, jak możemy dostać się stąd do czegoś takiego jak Concepts Lite.

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?

Automatycznie wybierz typ zmiennej wystarczająco duży, aby pomieścić określoną liczbę

Czy w C++ można zdefiniować typ, który jest wystarczająco duży, aby pomieścić co najwyżej określoną liczbę, prawdopodobnie uż ... bu na zrobienie szablonu, który mógłby to zrobić, ale znając szablony C++, jestem pewien, że istnieje sposób. Jakieś pomysły?

Przeciążanie wielu obiektów funkcyjnych przez odniesienie

W C++17 trywialne jest zaimplementowanie overload(fs...) funkcji, która, biorąc pod uwagę dowolną liczbę argumentów fs... spe ... aca nowy obiekt funkcji, który zachowuje się jak przeciążenie fs..., ale odwołuje się do fs... zamiast kopiować/przenosić je?

Czy ktoś używa metaprogramowania szablonów w realu? [zamknięte]

Odkryłem template metaprogramming ponad 5 lat temu i dostałem kopa od czytania Modern C++ Design ale nigdy nie znalazłem o ... w prawdziwym życiu. Czy używałeś kiedyś tej techniki w prawdziwym kodzie? Wkłady do Boost nie muszą się stosować; o)

TMP: jak uogólnić iloczyn kartezjański wektorów?

Istnieje doskonałe rozwiązanie C++ (właściwie 2 rozwiązania: rekurencyjne i nie rekurencyjne), do iloczyn kartezjański wektor ... Więc wejścia takie jak to są niedozwolone: {{5,"baz"}{'c',-2}} EDIT zmieniono wejście z postrzępionego wektora na krotkę

Czy możliwe jest tworzenie statycznych pętli w c++?

Czy możliwe jest istnienie czegoś takiego? template<int Channel> void deduce_mask(Matrix const &src, int mask[ ... jak rozwiązanie do metaprogramowania? Dla mnie prosta pętla for jest o wiele łatwiejsza do pracy niż wersja metaprogramująca.

Default template parameter & lambda in unevaluated context: bug or feature?

Rozważamy cel stworzenia dwóch różnych typów, przy użyciu dokładnie tej samej składni. Można to łatwo zrobić z lambda: {]} ... aga: mam nadzieję, że jest to funkcja, a nie błąd, ale tylko dlatego, że sprawia, że niektóre szalone pomysły można wdrożyć

Jak mogę wykryć, czy typ może być przesyłany strumieniowo do STD:: ostream?

Próbuję napisać cechę typu, aby wykryć, czy typ ma przeciążony operator Czegoś mi brakuje, ponieważ zawsze dostaję true dla ... ::value << std::endl; return 0; } Wyjście: 1 Tutaj jest w ideone: https://ideone.com/ikSBoT Co robię źle?

Określa, czy typ jest kontenerem STL w czasie kompilacji

Chciałbym napisać szablon, który określi, czy typ jest kontenerem stl w czasie kompilacji. Mam następujący bit kodu: str ... iem jak stworzyć niezbędne Specjalizacje dla std::vector<T,Alloc>, deque<T,Alloc>, set<T,Alloc,Comp> itp...

Generowanie jednego członka klasy na zmienny argument szablonu

Mam klasę szablonów, gdzie każdy argument szablonu oznacza jeden typ wartości, który może obsłużyć wewnętrzne obliczenia. Sza ... bić z nią jakąś magię RTTI (?). Ale jak je zapisać w STD::initializer_list również nie jest dla mnie jasne. Dzięki za pomoc!

Jak zamawiać typy w czasie kompilacji?

Rozważ następujący program: #include <tuple> #include <vector> #include <iostream> #include <type_trai ... ci (niezależnie od tej kolejności). Czy można to zrobić w czasie kompilacji przy użyciu technik metaprogramowania szablonów?

Makra Scali, gdzie są używane?

Właśnie zauważyłem, że Scala ma makra, ale nigdy nie widziałem żadnego kodu, który ich używa. Wydają się też zupełnie inne od ... zrozumieniem Scali. Ale czy makra oferują też coś dla przeciętnego programisty Scali? Czy użycie makr poprawi mój kod Scali?

Concatenate compile-time strings in a template at compile time?

Obecnie mam: template <typename T> struct typename_struct<T*> { static char const* name() { return ... i to) czy może takie wywołanie skutkuje 4 połączeniami std::string based w czasie wykonywania? (I would not be ok with that)

Jak Mogę uzyskać głębię wielowymiarowego std:: vector podczas kompilacji?

Mam funkcję, która przyjmuje wielowymiarową {[2] } i wymaga, aby głębokość (lub liczba wymiarów) została przekazana jako para ... ko szablon parametr: // Same as calling foo<3>(v); foo<GetDepth(v)>(v); Czy jest jakiś sposób, aby to zrobić?