Вопросы с тегом «templates»

Тег templates используется в нескольких контекстах: общее программирование (особенно C ++) и генерация данных / документов с использованием шаблонизаторов. При использовании этого тега в сложных вопросах реализации - пометьте язык кода, на котором написана реализация.

3
Почему не обязательно использовать typename для зависимых типов в следующем случае?
Я читал об удалении ссылки типа здесь . Это дает следующий пример: #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>(); …


2
Почему C ++ не может вывести T при вызове Foo <T> :: Foo (T &&)?
Учитывая следующую структуру шаблона: template&lt;typename T&gt; struct Foo { Foo(T&amp;&amp;) {} }; Это компилируется и Tвыводится так int: auto f = Foo(2); Но это не компилируется: https://godbolt.org/z/hAA9TE int x = 2; auto f = Foo(x); /* &lt;source&gt;:12:15: error: no viable constructor or deduction guide for deduction of template arguments of …


1
Передача указателя на функцию из массива указателей на функцию в качестве аргумента шаблона
Я хотел бы передать указатель на функцию из массива указателей на функцию в качестве аргумента шаблона. Кажется, мой код компилируется с использованием MSVC, хотя Intellisense жалуется, что что-то не так. И gcc, и clang не могут скомпилировать код. Рассмотрим следующий пример: static void test() {} using FunctionPointer = void(*)(); static …
9 c++  templates  c++14 

1
несоответствие clang / gcc в специализации классов
Я столкнулся с этой проблемой, пытаясь специализировать tuple_size/ tuple_elementдля пользовательского класса в C ++ 17 для структурированного связывания. Ниже код компилируется в GCC, но не в clang (обе версии транка, см. Ссылку ниже). #include &lt;type_traits&gt; template&lt;typename T, typename... Ts&gt; using sfinae_t = T; template&lt;typename T, bool... Bs&gt; using sfinae_v_t = …

5
Как вернуть правильный тип данных в шаблоны?
#include &lt;iostream&gt; using namespace std; template &lt;class X, class Y&gt; Y big(X a, Y b) { if (a &gt; b) return (a); else return (b); } int main() { cout &lt;&lt; big(32.8, 9); } Здесь я использую шаблоны в CPP, поэтому, когда я вызываю функцию, bigобходя аргументы типа doubleи int, …

1
Пытаясь понять шаблоны и поиск имени
Я пытаюсь понять следующие фрагменты кода Фрагмент №1 template &lt;typename T&gt; struct A { static constexpr int VB = T::VD; }; struct B : A&lt;B&gt; { }; Ни gcc9, ни clang9 не выдают здесь ошибку. В. Почему этот код компилируется? Разве мы не являемся экземплярами A&lt;B&gt;при наследовании от B? В …
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.