我有一個可變參數模板類,可以在構造函數中的任何數量的變量,也是一個std::tuple/std::pair
等等。如何使用「使用」關鍵字的可變參數模板
我想用這種包裝的功能具有不同的返回類型。
例如:
class f1
{
using output = double;
output operator() { do_smth };
}
class f2
{
using output = std::tuple<double,int>;
output operator() { do_smth };
}
template <typename... Types>
class OutputType
{
std::tuple<Types...> m_val;
public:
OutputType(std::tuple<Types...>&& val) : m_val(val) {};
OutputType(Types&& ... val) : m_val(std::forward<Types>(Types)...) {};
};
現在,在第三類,我想用這樣的聲明:
template <typename F>
class dummy
{
using Output = typename OutputType(typename F::Output));
}
如何申報上述所以它的正確的事情也using語句爲dummy<f2>
?
(即OutputType<double,int>
,而不是OutputType<std::tuple<double,int>>
)
你可以提供一個代碼,至少工作'f1'?你的代碼包含大量的印刷錯誤...你需要的可能是爲'std :: tuple'專門設計'dummy'。 – Holt
您可能可以將元組轉換爲包並將該包發送到'OutputType'。不知道如何看起來。儘管將元組轉換爲參數包,但這裏已經有很多東西了。 – NathanOliver