Вопросы по теме 'template-argument-deduction'

Вывод аргументов шаблона
В настоящее время я столкнулся с проблемой, которую не смог решить сам. В основном то, что я пытаюсь сделать, - это реализовать на C ++ некоторое поведение, подобное linq. Начну с кода в шапке: template<typename T, template<class = T>...
4960 просмотров

Вывод шаблона указателя на метод С++ не компилируется при нацеливании на x86, но работает с x64
У меня есть этот пример кода: struct A { int foo() { return 27; } }; template<typename T> struct Gobstopper { }; template<> struct Gobstopper<int(void)> { Gobstopper(int, int) { } // To differentiate from general...
541 просмотров

Частичная спецификация функции шаблона в C++ работает, но почему?
Я пытаюсь выяснить, является ли частичная спецификация шаблонных функций частью стандарта С++ или это что-то специфичное для компилятора. Под частичной спецификацией я подразумеваю указание только тех типов, которые компилятор не может вывести....
1769 просмотров

Ошибка вывода типа аргумента шаблона с C++ 11 ‹type_traits›
Я пытаюсь понять, как использовать C++(11) <type_traits> . Вот моя тривиальная тестовая программа #include <type_traits> template<class U, class S> inline U add(typename...
2649 просмотров

Шаблоны С++: подскажите аргументы шаблона компилятору?
У меня есть следующее определение класса: template<std::size_t N> class Vector { public: template<typename T> Vector(std::enable_if<is_foreach_iterator<T>, T>::type& it_begin, T& _end) { // At this...
866 просмотров

Что такое невыведенный контекст?
Я наткнулся на " Почему аргумент шаблона дедукция здесь не работает? ", и ответы можно свести к" Это невыведенный контекст ". В частности, первый говорит, что это такая вещь, а затем перенаправляет на стандарт для «деталей», а второй цитирует...
6369 просмотров

Почему этот вывод шаблона не работает
Этот код не будет компилироваться с clang++ 6.0 или g++ 4.9.1 (код не имеет значения, но это минимальный пример, который позволяет это сделать): #include <forward_list> template<typename T> T getItem(typename...
202 просмотров

Не могу определить тип шаблона
Я пытаюсь передать итератор в качестве параметра шаблона методу шаблона, но компилятор жалуется, что: error C2783: 'void Test::Assert(std::vector<T>::const_iterator)': could not deduce template argument for 'T' Код, вызывающий ошибку:...
1394 просмотров

Почему для этого указателя на функцию не удается вычислить аргумент вариативного шаблона?
В следующем минимальном примере S::foo работает, но S::bar не работает. Единственная разница - это порядок пакетов параметров Ts и Us . struct FPtr и S::lol - лучший обходной путь, который я нашел, но его довольно неудобно...
476 просмотров

Семантические ошибки с разрешением перегрузки для init-list-as-function-argument и шаблонов
Я настроил Eclipse CDT (Eclipse v4.5.0, идентификатор сборки 20150621-1200; CDT v8.7.0.201506070905) для использования C++11 в постоянном процессе сборки, но некоторые выражения по-прежнему вызывают семантические ошибки, даже если они правильно...
109 просмотров

Неявное преобразование может произойти во время подстановки шаблона?
Я всегда думал, что с шаблонными функциями не может произойти неявное преобразование, и типы аргументов должны точно соответствовать шаблонным типам параметров, иначе вывод шаблонного аргумента не удастся. Что ж, кажется, я ошибся. Рассмотрим...
70 просмотров
schedule 04.10.2022

Вывод аргументов шаблона для пакета параметров функции, за которым следуют другие параметры
Является ли вычет для f1 и f2 неправильно? template<class... T, class U> void f1(T..., U){} template<class... T> void f2(T..., int){} int main() { f1(1); f2(1); return 0; } g ++ принимает оба, clang принимает...
382 просмотров

Шаблоны, массивы и постоянные выражения
Рассмотрим код ниже: template<char> struct S { }; template<int N> constexpr auto f(const char (&ref) [N]) { return S<ref[0]>{}; } int main() { constexpr auto v = f("foo"); (void)v; } Он не компилируется,...
77 просмотров

Невозможно вывести параметр шаблона "N"
Я попытался свести это к минимуму: #include <array> template <std::size_t N> void f(int, std::array<int, N> const & = std::array<int, 0>()) { } int main() { f(10); } array_test.cpp:4:6: примечание:...
255 просмотров

Руководство по дедукции и вариативные шаблоны
Рассмотрим следующий код: #include <tuple> #include <iostream> template <class T> struct custom_wrapper { template <class Arg> custom_wrapper(Arg arg): data(arg) {} T data; }; template <class Arg>...
1169 просмотров

Почему вывод класса шаблона С++ 17 не работает, когда я указываю некоторые параметры шаблона?
C++17 представил вывод аргументов шаблона класса . Хотя в большинстве случаев это не более чем синтаксический сахар, бывают случаи, когда он действительно приходит на помощь, особенно в общем коде, например в этом случае . Еще одним хорошим...
819 просмотров

Соответствуют ли определяемые пользователем руководства по выводам, включающие параметр шаблона шаблона в качестве шаблона для стандарта руководства
Фон Вчера я задал вопрос о гарантиях удержания руководит использованием в случае параметров шаблона шаблона . Я был очень удивлен, когда Барри изменил свой ответ на подтверждение соответствия кода стандарту. Мое удивление на самом деле исходит...
593 просмотров

передача указателя перегруженной функции в качестве аргумента перегруженной функции шаблона
Я пытаюсь заставить компилятор вывести правильный шаблон функции. Учитывая следующий код, выводится правильная шаблонная функция... class TestBase{}; template <typename c, typename RT, typename T0> inline void CallF( RT( c::*M )(T0),...
204 просмотров

Вариативный шаблон, нет соответствующей функции для вызова
Я пытаюсь использовать вариативный шаблон для рефакторинга части моего кода, но у компилятора есть ошибка «нет соответствующей функции для вызова». Ниже приведен упрощенный вариант (может не имеет смысла для функционала, но пример для воспроизведения...
1047 просмотров

Не удается вывести параметр шаблона при использовании вспомогательной структуры шаблона
Я хотел бы, чтобы некоторые функции шаблона работали с существующими помощниками шаблонной структуры. Однако вывод аргумента шаблона не удается. Есть ли обходной путь? Пример Этот перегруженный operator << компилируется и работает:...
866 просмотров
schedule 14.12.2022