c++ - 可变参数的 value_type

标签 c++

我可以在 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...

关于c++ - 可变参数的 value_type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58975854/

相关文章:

c++ - 如何将 uint256_t 转换/剪切为 uint8_t[ ]

c++ - 带有 C++11 线程库的 boehm-gc

c++ - 使用 4/5 舍入规则对数字进行舍入

c++ - 无法在C++中包含头文件

c++ - 段错误 : and the disassembly is different between objdump and gdb

c++ - 带有 PNG/Alpha channel 图像的图像列表

c++ - 如何打印QImage的所有原始数据在内存中进行比较?

c++ - 将攻击性句子列入黑名单

c++ - 通过修改的exp最快的pow()替换。当已经计算出较低的幂时,通过平方

c++ - Cout 在降序 C++ 中加倍