鉴于以下人为的(是的,可怕的)示例:
template<typename... Args>
void something(Args... args)
{
std::tuple<Args...> tuple; // not initializing for sake of example
std::get<0>(tuple) = 5;
}
如果你这样称呼它,它会起作用:
int x = 10;
something<int>(x);
但是,如果您这样称呼它,它就不起作用:
int x = 10;
something<int&>(x);
由于分配给 5。假设无论出于何种原因,我不能在定义元组时对其进行初始化,那么在将类型指定为引用时,我该如何让它工作?
具体来说,我希望元组是std::tuple<int>
even when Args...
is int&
。
实际用例涉及将字符串反序列化为元组,其中Args...
参数类型是函数的参数类型,然后通过解包元组来调用该函数。这一切都很好,除非函数通过引用获取参数。
我正在使用 gcc 4.5.2,但会接受此编译器中尚未实现的答案。