Описание тега templates-deduction
1
ответ
Смешивание значений вариационных шаблонов и выведенных типов
Следующее точно определено стандартом? #include <iostream> template <unsigned int... Values, class... Types> void f(Types&&... values) { std::cout<<sizeof...(Values)<<" "<<sizeof...(Types)<<std::endl; } in…
13 янв '14 в 21:09
3
ответа
Получение правильного value_type
В моем классе у меня есть член: std::vector<std::string> memory_; Теперь я хотел бы, чтобы fnc возвращал то, что находится в первом элементе памяти, но я не хочу указывать std::string в качестве типа возврата в случае, если позже я решу исполь…
17 ноя '11 в 09:14
1
ответ
Частичная спецификация шаблонной функции в C++ работает, но почему?
Я пытаюсь выяснить, является ли частичная спецификация шаблонных функций частью стандарта C++ или это что-то специфичное для компилятора. Под частичной спецификацией я подразумеваю указание только тех типов, которые компилятор не может определить. П…
25 ноя '12 в 19:16
2
ответа
Вычитание шаблона C++ не работает
Для следующего кода: #include<functional> template<typename T> void f(std::function<void(T)> g) { } template<typename T> void g(T x) { } int main() { f(&g<int>); } Компилятор C++14 выдает ошибку: no matching functio…
22 дек '16 в 23:42
2
ответа
Почему std::function не может принять выведенный тип в качестве параметра шаблона?
#include <functional> using namespace std; template<class CharType> void f1(CharType* str, function<bool(CharType)> fn_filter) {} template<class CharType> void f2(CharType* str, function<bool(char)> fn_filter) {} void f…
30 окт '13 в 04:20
3
ответа
Параметры шаблона по умолчанию: Почему компилятор жалуется на отсутствие указания аргумента шаблона?
У меня есть этот код: struct A{}; template<class T = A> struct B { void foo() {} }; B b; //Error: missing template arguments before 'b' //Error: expected ';' before 'b' //More errors b.foo() Если я сделаю foo() как функция шаблона с тем же шаб…
27 июн '12 в 16:57
2
ответа
Можно ли определить, является ли тип неполным без сбоя компиляции?
Я хочу добиться такого поведения, как sizeof(complete_type) вернет реальный sizeof, а sizeof(incomplete_type) - будет просто 0 Это необходимо для предоставления расширенной информации о типе времени выполнения для связи IPC(между процессами) со стру…
09 дек '11 в 17:03
1
ответ
Вывод параметров шаблона C++ не работает
Мне нужно переопределить связь между boost::signals2::signal а также boost::function, Для этого я создал следующую функцию шаблона: template<typename T> void bind(boost::signals2::signal<T> &signal, boost::function<T> function)…
06 июл '12 в 22:02
2
ответа
Почему экземпляры шаблона не могут быть выведены в `std::reference_wrapper`s?
Предположим, у меня есть какой-то объект типа Tи я хочу поместить его в справочную оболочку: int a = 5, b = 7; std::reference_wrapper<int> p(a), q(b); // or "auto p = std::ref(a)" Теперь я могу с готовностью сказать, if (p < q)потому что сс…
14 дек '11 в 23:08
4
ответа
Частичное упорядочение с шаблоном функции, имеющим неопределенный контекст
Читая другой вопрос, я столкнулся с проблемой частичного упорядочения, которую я сократил до следующего контрольного примера. template<typename T> struct Const { typedef void type; }; template<typename T> void f(T, typename Const<T>…
24 июл '09 в 21:45
2
ответа
Выводит знание оригинальных типов, одновременно отправляя
Резюме: я хочу закончить с функцией, которая выводит точные типы, с которыми она была вызвана, и принимает (например) кортеж, который передает их (типы которых будут отличаться от точных типов, с которыми была вызвана функция). Я застрял, пытаясь "у…
25 окт '11 в 13:43
2
ответа
Вычет шаблона в dynamic_cast
У меня есть класс, который определяется следующим образом: template <class WidgetType> class CometWidget : public WidgetType; Внутри функции я делаю это: dynamic_cast<CometWidget *>(iter2->second.second)->changesCommited_(); и это …
27 янв '10 в 19:43
3
ответа
Вывод типа с шаблоном, указателем метода и строками
Я столкнулся с серьезной проблемой вывода типа шаблона, когда я использую указатель метода в аргументе функции шаблона. Давайте возьмем следующий код: template <class ClassT, typename Arg1T> inline void testTemplateFct(ClassT * clazz, void (Cl…
23 апр '17 в 15:56
1
ответ
Вычисление шаблона указателя на метод в C++ не компилируется при нацеливании на 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 Gobstopper templat…
15 мар '12 в 22:56
3
ответа
Почему автоматическое вычитание и вычитание типа шаблона отличаются для инициализированных скобками?
Я понимаю, что, учитывая инициализированный скобками, auto выведет тип std::initializer_list, в то время как вывод типа шаблона не удастся: auto var = { 1, 2, 3 }; // type deduced as std::initializer_list<int> template<class T> void f(T …
10 июл '13 в 23:29
1
ответ
Вычитание шаблона C++ при вызове функции шаблона
FastDelegate ссылается на http://www.codeproject.com/KB/cpp/FastDelegate.aspx, но я не думаю, что это связано. У меня есть код, как следующий, и получил ошибку. #include <FastDelegate.h> using namespace fastdelegate; template <typename T>…
18 окт '11 в 16:37
3
ответа
Вывести аргумент шаблона из сигнатуры вызова std::function
Рассмотрим эту функцию шаблона: template<typename ReturnT> ReturnT foo(const std::function<ReturnT ()>& fun) { return fun(); } Почему компилятор не может сделать вывод ReturnT из подписи пропущенного вызова? bool bar() { /* ... */ } …
19 июн '12 в 14:40
2
ответа
Нет вызова соответствующей функции для функции сортировки с шаблонами (C++)
Я играю с шаблонами, и мне было интересно, почему я получаю ошибку несоответствующей функции при использовании шаблонов. /*selection sort*/ template <typename InputIterator, typename T> void selection_sort(InputIterator first, InputIterator la…
19 янв '13 в 09:15
1
ответ
C++ Правила для замены аргументов
После полиморфизма C++ с boost scoped_ptr я хотел бы понять правила вывода аргументов C++. Например: правила полиморфных замен C++, когда используются умные указатели и контейнеры автоматические преобразования между константными и неконстантными арг…
24 мар '12 в 19:23
6
ответов
Шаблон вычитания для функции на основе ее типа возврата?
Я хотел бы иметь возможность использовать шаблон вывода для достижения следующего: GCPtr<A> ptr1 = GC::Allocate(); GCPtr<B> ptr2 = GC::Allocate(); вместо (что у меня сейчас есть): GCPtr<A> ptr1 = GC::Allocate<A>(); GCPtr<B…
10 апр '10 в 10:09