假设,我有一个使用 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()
创建容器的副本,而不是通过引用传递原始容器。有没有办法强制引用?