gpt4 book ai didi

c++ - 对具有许多模板参数的类进行操作

转载 作者:行者123 更新时间:2023-11-30 01:45:21 25 4
gpt4 key购买 nike

我正在编写一个函数,该函数对具有许多模板参数的类型进行操作。例如:

template <typename A, typename B, typename C, int MinSize, int MaxSize>
struct Foo {
// ...
};

我的函数可以对任何 Foo 进行操作 - 我不关心模板参数。我可以编写一个函数模板来接受这些对象:

template <typename A, typename B, typename C, int MinSize, int MaxSize>
void do_work(const Foo<A, B, C, MinSize, MaxSize>& foo) {
// ...
}

这工作正常但似乎有点冗长。如果 do_work 已经是一个模板,情况会变得更糟。模板参数的数量变得非常快,我认为它变得难以理解。这是我应该关心的事情还是这种事情一直在发生?

是否有另一种方法可以编写 do_work,这样我就不必包含所有 Foo 的模板参数?也许使用一个更通用的模板和一个 static_assert 来确保我得到一个 Foo

template <typename FooType>
void do_work(const FooType& foo) {
// make sure foo is a 'Foo<...>'
static_assert(??)
}

最佳答案

可变参数模板怎么样:

template <typename ...Args>
void do_work(const Foo<Args...>& foo) { /* ... */ }

虽然您不会轻易获得各个模板参数,但也许这会有所帮助。

关于c++ - 对具有许多模板参数的类进行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34751742/

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