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


1
Czy szablon zmiennej można przekazać jako argument szablonu szablonu?
Poniższy bezsensowny przykład nie kompiluje się, ale czy istnieje jakiś inny sposób przekazania szablonu zmiennej jako argumentu szablonu szablonu? template<typename T> constexpr auto zero = T{0}; template<typename T, template<typename> auto VariableTemplate> constexpr auto add_one() { return VariableTemplate<T> + T{1}; } int main() { return add_one<int, zero>(); } Wypróbuj Eksplorator kompilatorów

2
Odliczenie typów argumentów szablonu szablonu C ++
Mam kod, który wyszukuje i drukuje dopasowania wzorca przechodzące przez kontener ciągów. Drukowanie odbywa się w funkcji foo, która jest szablonowana Kod #include <iostream> #include <algorithm> #include <iterator> #include <vector> #include <string> #include <tuple> #include <utility> template<typename Iterator, template<typename> class Container> void foo(Iterator first, Container<std::pair<Iterator, Iterator>> const &findings) { for …

1
Problem w GCC / C ++ 17 z klasą szablonów szablonów
Rozważ 2 następujące przeciążenia template<typename T> bool test() { return true; } template<template<typename ...> class T> bool test() { return false; } Pierwszy działa dla klas regularnych, a drugi dla szablonów, które nie są tworzone. Na przykład: std::cout<<test<int>()<<std::endl; <-- this yields 1 std::cout<<test<std::list>()<<std::endl; <--this yields 0 Teraz rozważ następującą funkcję …
10 c++  templates  gcc  clang  c++17 


3
Dlaczego nie jest wymagane używanie nazwy typu dla typów zależnych w następującym przypadku?
Czytałem o usuwaniu odwołania do typu tutaj . Daje następujący przykład: #include <iostream> // std::cout #include <type_traits> // std::is_same template<class T1, class T2> void print_is_same() { std::cout << std::is_same<T1, T2>() << '\n'; } int main() { std::cout << std::boolalpha; print_is_same<int, int>(); print_is_same<int, int &>(); print_is_same<int, int &&>(); print_is_same<int, std::remove_reference<int>::type>(); // …


1
Przekazywanie wskaźnika funkcji z tablicy wskaźników funkcji jako argumentu szablonu
Chciałbym przekazać wskaźnik funkcji z tablicy wskaźników funkcji jako argument szablonu. Mój kod wydaje się kompilować przy użyciu MSVC, chociaż Intellisense narzeka, że ​​coś jest nie tak. Zarówno gcc, jak i clang nie mogą skompilować kodu. Rozważ następujący przykład: static void test() {} using FunctionPointer = void(*)(); static constexpr FunctionPointer …
9 c++  templates  c++14 

1
niespójność clang / gcc w specjalizacji klasowej
Natknąłem się na ten problem podczas próby specjalizacji tuple_size/ tuple_elementdla niestandardowej klasy w C ++ 17 dla powiązań strukturalnych. Poniższy kod kompiluje się w GCC, ale nie w clang (obie wersje trunk, patrz poniższy link). #include <type_traits> template<typename T, typename... Ts> using sfinae_t = T; template<typename T, bool... Bs> using …


1
Próbowanie zrozumienia szablonów i wyszukiwania nazw
Próbuję zrozumieć następujące fragmenty kodu Fragment nr 1 template <typename T> struct A { static constexpr int VB = T::VD; }; struct B : A<B> { }; Ani gcc9, ani clang9 nie generują tutaj błędu. P: Dlaczego ten kod się kompiluje? Czy nie A<B>dziedziczymy podczas dziedziczenia po B? W B …


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.