1
我想返回的std::tuple_cat
從我的函數的結果,但我無法推斷返回類型獲得連接的元組類型;結合的result_of和tuple_cat
#include <tuple>
struct H {
typedef std::tuple<int,int> tuple_type;
tuple_type a {1,2};
};
template <typename tuple_holder_type, typename B>
???
func(tuple_holder_type h, B b) {
return std::tuple_cat(h.a,std::make_tuple(b));
}
int main(int argc, char const *argv[]) {
auto h = H();
auto b = 3;
auto c = func(h,b);
return 0;
}
我試圖結合std::result_of
和std::tuple_cat
這樣
typename std::result_of<std::tuple_cat(tuple_holder_type::tuple_type,std::tuple<B>) >::type
但只有錯誤信息
test.cpp:9:85: error: template argument 1 is invalid
test.cpp:9:86: error: expected identifier before '::' token
test.cpp:10:1: error: expected initializer before 'func'
問題:我該怎麼辦把問號,而不是爲這個工作
獎金問:爲什麼它的工作原理
編輯 忘了提,我需要這樣我就可以把結果類型的typedef
,導致東西像
template <typename tuple_holder_type, typename B>
struct tuple_appender {
typedef ??? return_type;
return_type operator() /*...*/
}
謝謝:)
謝謝你,但我不能在typedef使用這種'decltype',沒有辦法做到這一點? – Valerij
我不完全瞭解您的評論。你是說你的編譯器不支持'decltype',你需要一個解決方法嗎? –
最終'func'是一個成員函數,我想通過一個typedef揭露它的返回類型,檢查更新的問題,對不起 – Valerij