Pytania otagowane jako templates

Tag szablonów jest używany w wielu kontekstach: programowanie ogólne (zwłaszcza C ++) oraz generowanie danych / dokumentów przy użyciu mechanizmów szablonów. Podczas używania tego znacznika przy implementacji ciężkich pytań - oznacz język kodu, w którym napisano implementację.


2
Jak wdrażana jest funkcja std :: is_function?
Jak wygląda implementacja std::is_function? template<class T> struct is_function : std::integral_constant< bool, !std::is_const<const T>::value && !std::is_reference<T>::value > {}; (z referencji CPP ) Wydaje mi się, intże w tej definicji byłaby funkcja. czego mi brakuje?
82 c++  templates  std  sfinae 

6
Powiel kod przy użyciu języka C ++ 11
Obecnie pracuję nad projektem i mam następujący problem. Mam metodę C ++, którą chcę pracować na dwa różne sposoby: void MyFunction() { foo(); bar(); foobar(); } void MyFunctionWithABonus() { foo(); bar(); doBonusStuff(); foobar(); } I nie chciałbym powielać swojego kodu, ponieważ rzeczywista funkcja jest znacznie dłuższa. Problem polega na tym, …
80 c++  c++11  templates 


1
Zagnieżdżone szablony z zakresem zależnym
Co to jest zakres zależny i jakie jest znaczenie nazwy typu w kontekście następującego błędu? $ make g++ -std=gnu++0x main.cpp main.cpp:18:10: error: need 'typename' before 'ptrModel<std::vector<Data> >::Type' because 'ptrModel<std::vector<Data> >' is a dependent scope make: *** [all] Error 1 /* * main.cpp */ #include <vector> #include <memory> template<typename T> struct …
79 c++  templates  scope  nested 

3
Jak uzyskać głębokość wielowymiarowego std :: vector w czasie kompilacji?
Mam funkcję, która przyjmuje wielowymiarowość std::vectori wymaga podania głębokości (lub liczby wymiarów) jako parametru szablonu. Zamiast na stałe wpisywać tę wartość, chciałbym napisać constexprfunkcję, która pobierze std::vectori zwróci głębokość jako unsigned integerwartość. Na przykład: std::vector<std::vector<std::vector<int>>> v = { { { 0, 1}, { 2, 3 } }, { { 4, …

2
Dlaczego remove_reference nie działa na funkcje?
Wpadłem na coś dziwnego podczas wykonywania metaprogramowania szablonu innego dnia. Zasadniczo sprowadza się do tego twierdzenia, że ​​nie jest (jak się spodziewałbym) przemijanie. static_assert(std::is_same_v<void(), std::remove_reference_t<void()&>>); Na początku myślałem, że popełniam błąd składniowy, definiując odwołanie do funkcji, ale to twierdzenie mija, pokazując, że tak nie jest. static_assert(std::is_same_v<void()&, void()&>); Próbowałem też zaimplementować …
38 c++  templates  types  c++17 

4
Programowanie meta szablonów
Czy ktoś może mi wyjaśnić, dlaczego pierwszy sposób metaprogramowania szablonów prowadzi do nieskończonej pętli, ale drugi działa poprawnie. #include <iostream> using namespace std; template<int N, int M> struct commondivs { static const int val = (N<M) ? commondivs<N,(M-N)>::val : commondivs<(N-M),M>::val; }; template<int N> struct commondivs<N,N> { static const int val …

4
Przeciążenie funkcji za pomocą szablonów
Próbuję zdefiniować funkcję za pomocą szablonów i chcę, aby nazwa typu była int lub anEnum (określony wyliczenie, które zdefiniowałem). Próbowałem następujące, ale nie powiodło się: template <int | anEnum T> // or <int T, anEnum T> or <int, anEnum T> bool isFunction(const T &aVariable){} Staram się używać szablonów zamiast definiować …

3
Jak mogę stworzyć sposób kartezjańskiego produktu list typów w C ++?
Wyjaśniające. Zasadniczo powiedz, że mam takie listy typów: using type_list_1 = type_list<int, somestructA>; using type_list_2 = type_list<somestructB>; using type_list_3 = type_list<double, short>; Mogą to być różne listy typów. Jak uzyskać listę typową produktu kartezjańskiego? result = type_list< type_list<int, somestructB, double>, type_list<int, somestructB, short>, type_list<somestructA, somestructB, double>, type_list<somestructA, somestructB, short> >; …

4
Kontener STL z określonym typem jako argument ogólny
Czy jest jakiś sposób, w jaki mogę stworzyć funkcję, która przyjmuje kontener określonego typu (powiedzmy std::string) jako parametr void foo(const std::container<std::string> &cont) { for(std::string val: cont) { std::cout << val << std::endl; } } i nazwać to dla każdego typu kontenera STL jako dane wejściowe? jak wyżej? std::set<std::string> strset; std::vector<std::string> …


4
Jak wywołać odpowiedniego konstruktora typu szablonu?
Jak w poniższym kodzie mogę sprawić, by linia z komentarzem działała tak samo, jak linia tuż nad nią? Chciałbym, aby był to ogólny kod, który wywołuje odpowiedniego konstruktora szablonu Type. #include <string> #include <iostream> template <typename Type> struct Class { Type data; Class(Type data) : data(data) { } }; int …



Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.