Описание тега result-of

NoneStd::result_of - это метафункция C++11, которая предоставляет результат вызова типа функции с заданным набором типов аргументов.
1 ответ

Как я могу использовать result_of вместо decltype?

В этом ответе я создаю черту типа: template<typename T> using to_string_t = decltype(to_string(declval<T>())); Это работает просто отлично, но я изначально намеревался использовать result_of и теперь меня раздражает, что я не могу понять…
2 ответа

gcc 6.1 std::result_of ошибка компиляции

Рассмотрим небольшой автономный вариант использования, в котором я хочу определить, является ли тип полным или неполным использованием #include <type_traits> namespace { struct foo { template<class T, std::size_t = sizeof(T)> std::false_…
02 мар '17 в 08:03
8 ответов

Метапрограммирование: ошибка определения функции определяет отдельную функцию

В этом ответе я определяю шаблон на основе типа is_arithmetic имущество: template<typename T> enable_if_t<is_arithmetic<T>::value, string> stringify(T t){ return to_string(t); } template<typename T> enable_if_t<!is_arithme…
2 ответа

Разница между std::result_of и decltype

У меня есть некоторые проблемы с пониманием необходимости std::result_of в C++0x. Если я правильно поняла, result_of используется для получения результирующего типа вызова функционального объекта с определенными типами параметров. Например: template…
22 апр '10 в 09:45
1 ответ

std::result_of на std::bind не компилируется на clang++ 3.4

Следующий код компилируется с использованием g++-4.8, но не при использовании clang 3.4. #include <type_traits> #include <functional> struct A { template <typename Continuation> bool operator()( //const Continuation & continuat…
24 мар '14 в 14:37
2 ответа

Использовать invoke_result с типом аргумента void?

Я пытаюсь сделать следующее: struct Unwrapper { template<typename T> auto operator()(const T& arg, std::enable_if_t<isPrimitive<T>, void>* = nullptr) {return arg;} template<typename T> auto operator()(const T& arg, st…
07 янв '19 в 11:10
1 ответ

result_of вызова функции-члена параметра шаблона

Мне нужно получить результат функции-члена параметра шаблона класса. К сожалению, я связан с C++03 и не могу использовать decltype, но я могу использовать tr1::result_of. Я пробовал следующий код, но он не работал с моим компилятором (gcc 4.3, я так…
22 май '14 в 09:02
1 ответ

Использование std::result_of<> для метода члена типа члена

Я работаю с типом HashMap, который не определяет свой KeyType в качестве открытого члена, только ValueType. Способ получить KeyType будет использовать std::result_of с HashMap&lt;&gt;::Entry::GetKey() метод. Я не могу заставить его работать в шаблон…
27 апр '18 в 18:20
2 ответа

Поток C++, принимающий ссылочный аргумент, не скомпилирован

#include&lt;iostream&gt; #include&lt;thread&gt; using namespace std; void f1(double&amp; ret) { ret=5.; } int main() { double ret=0.; thread t1(f1, ret); t1.join(); cout &lt;&lt; "ret=" &lt;&lt; ret &lt;&lt; endl; } Приведенный выше код не может быт…
31 мар '16 в 19:10
2 ответа

result_of для объекта-члена с cv-квалифицированным аргументом

Учитывая следующие декларации: struct MyClass { }; typedef int MyClass::*Mp; На обоих gcc 6.2 и компиляторе Clang я пробовал, result_of&lt;Mp(const MyClass)&gt;::type доходность int&amp;&amp;, Резюме моего вопроса: почему int&amp;&amp; и не либо con…
28 авг '16 в 00:07
3 ответа

C++11 result_of вывести мой тип функции не удалось

Я пробовал программу ниже: #include&lt;type_traits&gt; using namespace std; template &lt;class F, class R = typename result_of&lt;F()&gt;::type&gt; R call(F&amp; f) { return f(); } int answer() { return 42; } int main() { call(answer); return 0; } "…
29 июн '16 в 01:42
1 ответ

C++11 применяет result_of к функции-члену, не удалось, почему?

Я получил следующий код в качестве эксперимента: int f1() { return 0; } struct Bar { Bar() = delete; int f() { return 0; } int operator()() { return 1; } }; int main() { decltype(f1()) x = 3;//f1() is expression result_of&lt;decltype(&amp;f1)()&gt;:…
21 июн '16 в 09:33
0 ответов

Как я могу использовать std::result_of для возврата типа функции вместо void

Я пытаюсь получить возвращаемый тип функции, с которой я связываюсь. В этом случае я ожидал увидеть возвращаемый тип GetFactorialResult (INT). #include &lt;iostream&gt; #include &lt;boost/core/demangle.hpp&gt; #include &lt;typeinfo&gt; namespace { c…
04 июн '18 в 15:17
1 ответ

Использование std::result_of с перегруженным методом

Я добавил перегруженный метод в существующий класс, что теперь вызывает ошибку компиляции в наших модульных тестах. Я повторил проблему с помощью следующего кода: #include &lt;type_traits&gt; #include &lt;string&gt; class Foo { public: Foo() {}; int…
01 мар '17 в 12:23
3 ответа

Предотвращение повторения для SFINAE Различение между типами возврата void и non void

Некоторые универсальные функции, управляющие кодом, должны работать по-разному в зависимости от того, имеет ли функция возвращаемое значение или нет. Например, заимствуя проблему из этого вопроса, скажем, что нам нужно написать time_it Функция прини…
22 мар '16 в 16:33
1 ответ

Как использовать std::result_of, когда возвращаемое значение является типом шаблона?

Я пытаюсь использовать result_of для случая, когда Callable возвращает тип шаблона и получить следующую ошибку (clang++). Я также включил простой случай, когда все работает отлично. Ошибка: main.cpp:22:50: note: candidate template ignored: could not…
05 ноя '16 в 02:20
1 ответ

Нужно 'typename' перед 'std::result_of<_Signature>:: type', потому что 'std::result_of<_Signature>' является зависимой областью действия

Я не могу найти хорошего решения. У меня есть кусок кода: #include &lt;iostream&gt; #include &lt;future&gt; #include &lt;memory&gt; #include &lt;functional&gt; #include &lt;cstddef&gt; #include &lt;tuple&gt; #include &lt;typeinfo&gt; #include &lt;qu…
15 окт '16 в 08:52
1 ответ

Получить возвращаемое значение для шаблона лямбда-параметра, как упростить код?

Это мой трюк: template&lt;typename F, typename TArg&gt; auto get_return_value(F * f = NULL, TArg * arg = NULL) -&gt; decltype((*f)(*arg)); Пример использования: template&lt;typename F, typename T&gt; decltype(get_return_value&lt;F,T&gt;()) applyFtoT…
11 дек '11 в 07:03
1 ответ

Как определить тип возврата оператора индексации данного типа массива с boost?

Какую сигнатуру типа мне нужно использовать, если я хочу определить тип, возвращаемый оператором индекса (массива) с использованием boost? Обратите внимание, что массивы, для которых я буду использовать это, не содержат typedefs и являются сторонним…
16 авг '10 в 16:50
2 ответа

C++11: std::result_of<> аргумент шаблона vs std::function<>

Я сделал некоторые исследования std::result_of&lt;&gt;и я знаю, как это используется на высоком уровне, но я все еще довольно запутался в этой волшебной вещи. Так что, если я правильно понимаю, форма R (Args..) должен интерпретироваться компилятором…
13 июн '18 в 04:43