首页 > 解决方案 > 可变参数的 value_type

问题描述

我可以在 C++ 中进行这样的参数解包吗?此代码无法编译,但我认为这是可能的。

template <typename Container, typename... Args>
void foo(Container& container, Args&&... args){
    tuple<typename Container::value_type, typename Args::value_type...> values;
    ...
}

标签: c++

解决方案


Args&&... args是转发参考。如果您将左值传递给它,则相应的类型 inArgs将被推断为左值引用。

typename Args::value_type仅当Args是类类型而不是类引用时才有效。因此,您需要从类型中去除参考性:

typename std::remove_reference_t<Args>::value_type...

推荐阅读