C++0x 10
■ このスレッドは過去ログ倉庫に格納されています
0579デフォルトの名無しさん
2010/08/21(土) 20:40:42#include <utility>
template <class... X> class Hoge
{
public:
void invoke(X... x)
{
func(x...);
}
template <class... Y> void t_invoke(Y &&... y)
{
func(std::forward<Y>(y)...);
}
private:
void func(X... x)
{
}
};
t_invokeのほうは無駄なく転送してくれそうなのですがinvokeのほうだとコピーコストが発生して困ります
かといって引数の型をX &&...やconst X &..に変更すると引数によってコンパイルエラーが出ます
そして引数の参照性やconst性の組み合わせを網羅してオーバーロードするのも可変長では無理ですしできても現実的じゃありません
何とかしてinvokeのほうでも無駄なコピーのない転送を実現したいんですがどうすればいいんでしょうか?
最終的にinvokeを関数ポインタにしたいのでどうしてもtemplateは使えないんです
■ このスレッドは過去ログ倉庫に格納されています