Результаты поиска по запросу "template-deduction"

1 ответ

Не могу определить тип шаблона

Я пытаюсь передать итератор в качестве параметра шаблона в метод шаблона, но компилятор жалуется, что:

1 ответ

Сокращенный шаблон функции и шаблон функции с параметром пересылки

Каковы различия междушаблоны функций с опорными параметрами

1 ответ

Что такое шаблоны вывода и когда мы должны их использовать?

Стандарт C ++ 17 вводит «руководство по выводу шаблона». Я полагаю, что они имеют какое-то отношение к новому выводу аргументов шаблона для конструкторов, пр...

ТОП публикаций

1 ответ

@ T.C. Переписал все.

1 ответ

PR35107

сно с [temp.deduct.guide/3 [https://timsong-cpp.github.io/cppwp/n4659/temp.deduct.guide#3]]: (...) Руководство по дедукции должно быть объявлено в той же области видимости, что и соответствующий шаблон класса, и, для шаблона класса члена, с ...

1 ответ

 действительно будет пустым в этой ситуации.

отрим следующий код: template <typename... Types> struct list { template <typename... Args> list(Args...) { static_assert(sizeof...(Types) > 0); } }; template <typename... Args> list(Args...) -> list<Args...>; int main() { list l{0, 0.1, 'a'}; ...

2 ответа

Сложности, возникающие здесь, в основном такие же, как и в случае унаследованного конструктора. Фейсал Вали (один из других разработчиков метода вывода аргументов шаблонов классов) имеет конкретный план, как заставить такие случаи работать, но комитет C ++ еще не обсуждал это расширение.

#include <utility> template<class T1, class T2> struct mypair : std::pair<T1, T2> { using std::pair<T1, T2>::pair; }; int main() { (void)std::pair(2, 3); // It works (void)mypair(2, 3); // It doesn't work }орошо сформировано? Можно ли вывести ...

2 ответа

 сама специализация, а не шаблон.

.deduct.type] пункт 8 [http://eel.is/c++draft/temp.deduct.type#8]перечисляет все выведенные контексты, но, похоже, не включаетtemplate-name<TT> гдеtemplate-name относится к шаблону класса иTT ссылается на аргумент шаблона шаблона. Это выведенный ...

2 ответа

 а также

отрим следующую программу: template <class T> struct A { using X = typename T::X; }; template <class T, typename A<T>::X* = nullptr> void f(T, int); void f(...); template <class T> void g(T, int, typename A<T>::X* = nullptr); // # void g(...); ...

1 ответ

Обходной путь для вывода аргумента шаблона в не выводимом контексте

Рассмотрим следующий код: #include <iostream> template<class T> struct outer { struct inner {}; }; template<class T> std::ostream& operator<<(std::ostream & stream, typename outer<T>::inner const& value) { std::cout << "An outer::inner!"; return ...