gpt4 book ai didi

C++在可变参数模板中获取多个元素

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:39:41 26 4
gpt4 key购买 nike

所以我试图在我的可变参数模板中获取一些元素,如下所示:

Test(const T& t...);

template<typename T>
inline Class<T>::Test(const T& t...){
int num = sizeof...(t);
...
}

但是它没有编译,我得到以下错误:

error C3523: 'sizeof...' requires as its argument an unexpanded parameter pack

't' is not a valid operand for 'sizeof...'. Did you mean to use'sizeof'?

t... 中获取参数数量的正确方法是什么?

最佳答案

尝试 std::tuple元编程:std::tuple_size<std::tuple<Types...>>::value产生类型参数的数量。例如,此代码打印 4 :

#include <iostream>
#include <tuple>
#include <cstddef>

template<typename ...Types>
constexpr std::size_t Test(Types&& ... args){
constexpr std::size_t sz = std::tuple_size<std::tuple<Types...>>::value;
return sz;
}

int main()
{
std::size_t val = Test(0, 0L, 'a', std::cin);
std::cout << val;
}

关于C++在可变参数模板中获取多个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53732158/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com