gpt4 book ai didi

c++ - 将可变参数模板的参数分成不同的列表?

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

是否可以将提供给类模板的类型“分离”到不同的列表中,以便我可以区别对待它们?我想做的是类似下面的事情。

Class<<A, B, C>, <1, 2, 3>> c; // initialization

template <<List1Args...>, <List2Args...>
class Class {
...
// do stuff on the first list of types
template<typename T>
void doStuffWithList1() {
...
}
template<typename First, typename Second, typename ... Rest>
void doStuffWithList1() {
...
doStuffWithList1<Second, Rest...>();
}

// do stuff on the second list of types
template<typename T>
void doStuffWithList2() {
...
}
template<typename First, typename Second, typename ... Rest>
void doStuffWithList2() {
...
doStuffWithList2<Second, Rest...>();
}
};

顺便说一句,有哪些好的资源/书籍可以让我更多地了解 C++ 11 模板元编程?

最佳答案

您可以使用 std::tuplestd::integer_sequence 对类型/值进行分组。

template <typename Tuple, typename Sequence> class Class;

template <typename ...Ts, std::size_t ...Is>
class Class<std::tuple<Ts...>, std::index_sequence<Is...>>
{
//...
};

Live example

关于c++ - 将可变参数模板的参数分成不同的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34449911/

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