我正在撰寫一個constexpr帶有可變引數的產品函式。我只能讓“版本 1”在下面作業。嘗試編譯“版本 2”時,我收到錯誤宣告型別包含未擴展的引數包 'data_type'。誰能解釋為什么會這樣?
/** Version 1. */
template <typename data_type, typename ...data_types>
constexpr data_type Product1(data_type _first, data_types ..._rest) // This code compiles :)
{
return _first*(_rest * ...);
}
/** Version 2. */
template <typename ...data_type>
constexpr data_type Product2(data_type ..._rest) // This code does not compile :(
{
return (_rest * ...);
}
uj5u.com熱心網友回復:
將回傳型別改為auto,datatype為pack,不能作為回傳型別
template <typename ...data_type>
constexpr auto Product2(const data_type& ..._rest)
{
return (_rest * ...);
}
int main()
{
constexpr auto p = Product2(1, 2, 3);
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/312595.html
上一篇:我如何做可變引數的可變引數模板
