CRTPを使用し、可変個引数テンプレートの静的メンバー関数を提供する基本クラスがあるとします。
template<typename derived_task>
struct task_impl : library::task
{
/* some useful functionality implemented using CRTP */
/// static method for spawning a task.
template<typename... Args>
static void spawn(Args... args)
{ library::spawn(new task(args...)); }
};
および派生クラス
struct my_task : task_impl<my_task>
{
/* implementation using functionality of task_impl<> */
my_task(container&c, int i);
};
次に、を介して可変個引数テンプレートメンバーを使用したい
container c( /* args for ctor */ );
my_task::spawn(c,0);
ここでspawn()
行われるのは、元のコンテナを参照で渡すのではなく、コンテナのコピーを作成することです。参照を強制する方法はありますか?