【发布时间】:2011-02-26 06:13:24
【问题描述】:
鉴于以下人为的(是的,糟糕的)示例:
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>,即使 Args... 是 int&。
实际用例涉及将字符串反序列化为元组,其中Args... 是函数的参数类型,然后通过解包元组来调用该函数。这一切都很好,除非函数通过引用获取参数。
我正在使用 gcc 4.5.2,但会接受尚未在此编译器中实现的答案。
【问题讨论】:
标签: c++ templates c++11 variadic-templates