Я учусь, как получить type
возвращаемого значения из перегруженной функции test()
против test(double)
.Тип типа «тип» в «std :: result_of»; получить тип возвращаемого значения от перегрузки функций
Я изменил код из a SO answer (by chris).
#include <type_traits>
#include <utility>
int test();
double test(double x);
template<typename... Ts>
using TestType = decltype(test(std::declval<Ts>()...))(Ts...);
int main() {
std::result_of< TestType<double> >::type n = 0;
//^ ### compile error ###
using doubleDat = std::result_of< TestType<double> >::type ;
doubleDat n=0;
}
У меня ошибка компиляции.
error: no type named 'type' in 'std::result_of'
Как я понимаю: -
TestType<...>
является "VARIADIC шаблон".
Своими словами он действует как упакованный аббревиатурой, который имеет любое количество параметров.TestType<double>
является идентификатор функцииtest(double)
.std::result_of<TestType<double>>::type
является тип возвращаемогоtest(double)
.
doubleDat
должно бытьdouble
.
Вопрос: Почему это не компилируется? Как его решить?
Я прочитал эти: -
- decltype for overloaded member function - не пример о
std::result_of
- c++: error: no type named ‘type’ in ‘class std::result_of<void (*(std::unordered_map - проблема, связанная с резьбой, а не
std::result_of
Clue: После долгих поисков, я получить слабый запах, который мой код страдает «Самый неприятный синтаксический разбор».
Я уже собирался написать свой собственный ответ после экспериментов. Ты подтолкнул меня на это. –
Я хочу быть хорошим в этих вещах. (Я медленно обучаюсь на основе проб и ошибок). Как получить богатые знания в этой области в одном большом куске? Есть ли какая-нибудь книга, например. который в [книге C++ book SO link] (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list), подробно освещая эти темы? учебное видео? Вы пишете несколько книг на C++? – javaLover
[Научите себя C++ за 21 день] (http://abstrusegoose.com/249) –