私はこの非常に素晴らしいラッパーを持っていますが、私はそれはT、S、R、Q、任意の数を受け入れたいのですが...std :: functionラッパーをvariadic関数に変換するにはどうすればよいですか?
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から、私は 'function:'の 'Ts 'の下で、宣言型に拡張されていないパラメータパック' Ts 'が含まれているというエラーが発生します。もし私が裁かなければならないとすれば、それはかなり明らかです。 – chris
確かに、それは私に何を言っているのですか? – Carbon