我可以在 C++ 中进行这样的参数解包吗?这段代码无法编译,但我认为这是可能的。
template <typename Container, typename... Args>
void foo(Container& container, Args&&... args){
tuple<typename Container::value_type, typename Args::value_type...> values;
...
}
请您参考如下方法:
Args&&... args
是转发引用。如果你给它传递一个左值,在 Args
中对应的类型将被推导为左值引用。typename Args::value_type
仅在 Args
时有效是类类型,而不是类的引用。因此,您需要从类型中去除引用:
typename std::remove_reference_t<Args>::value_type...