我有這個非常漂亮的包裝,但我想它接受任何數量的T,S,R,Q,...的如何將std :: function包裝器轉換爲可變參數函數?
template<typename U, typename T, typename S>
boost::variant<U, std::string> RunSafeFn2(const std::function<U(const T&,const S&)>& f, const std::string& errMsg, const T& a1, const S& a2)
{
try
{
return f(a1,a2);
}
catch (...)
{
return errMsg;
}
}
我嘗試了以下,並已對谷歌搜索,而人錯誤信息是神祕的 - 我試圖做甚麼可能?
template<typename U, class ... Ts>
boost::variant<U, std::string> RunSafeFnN(const std::function<U(Ts)>& f, const std::string& errMsg, Ts ... ts)
{
try
{
return bind(f, ts...);
}
catch (...)
{
return errMsg;
}
}
從Clang開始,我得到'error:聲明類型包含在函數'中的'Ts'下面帶有波形的未擴展參數包'Ts''。如果我要判斷,我會說這很清楚。 – chris
當然,但是它告訴我要做什麼? – Carbon