我有以下功能:自動演繹方法的返回類型
//method takes 2 or more template parameters
template <class A1, class A2, class ...Ax>
Value<FooMany> getValue() {
//note, FooAll's ctor takes std::string and std::initializer_list<std::size_t>
FooAll<Item> hairyStructure("abc", { Foo<A1>::getIndex(), Foo<A2>::getIndex(), Foo<Ax>::getIndex() ... });
return Value<FooMany>(someData, hairyStructure);
}
//method takes only 1 template parameter
template <class A>
Value<FooSingle> getValue() {
//note, FooOne's ctor takes std::string and std::size_t
FooOne<Item> hairyStructure("abc", Foo<A>::getIndex());
return Value<FooSingle>(someData, hairyStructure);
}
。
顯然,這些功能的類型是不同的。
我想知道,是否有可能將這兩個壓縮成單一方法,其中利用C++ 11功能(decltype,我猜), 會自動推斷返回類型?
所以,基本上,它應該返回Value<FooSingle>
如果getValue
被援引爲
GetValue<A>();
,它應該返回Value<FooMany>
如果調用例如,作爲
GetValue<A, B>();
或
GetValue<A, B, C>();
我不知道我的術語在「方法需要2個或更多模板參數」方面是否正確。請糾正我,如果它是錯誤的。
如果有幫助,我的問題繼續前面的話題:C++11 parameters pack overload
謝謝。
的類型是一回事,但你會如何寫在功能上'return'語句? –