我正在學習如何獲得type
重載函數test()
與test(double)
的返回值。「std :: result_of」中沒有類型命名爲「type」;從超載函數獲得返回類型
我修改了代碼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<...>
是 「可變參數模板」。
用我自己的話說,它的行爲如同一個包裝的縮寫,它有任何數量的參數。TestType<double>
是id的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
線索相關的問題:一個漫長的探索後,我得到我的代碼遭受的微弱氣味「最令人頭疼的解析」。
剛剛在試驗後寫我自己的答案。你擊敗了我。 –
我想要善於處理這些事情。 (我正在慢慢地從試驗和錯誤中學習)。如何在一個大塊中獲得關於這個領域的豐富知識?有沒有書,例如哪一個在[一本C++書籍SO鏈接](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)中,深入討論了這些主題?教程視頻?你寫一些C++書籍嗎? – javaLover
[在21天內自學C++](http://abstrusegoose.com/249) –