gpt4 book ai didi

c++ - 两包可变参数模板参数

转载 作者:行者123 更新时间:2023-11-30 01:35:00 26 4
gpt4 key购买 nike

我有一个可变参数模板函数 F,它必须恰好在两个对象上调用。另一个名为 G 的函数将因此调用 F 两次,一次针对对象一,另一次针对对象二。因此 G 也是可变的,但问题是 F 上的两次调用的两个可变参数包可能不同,并且 G 必须知道在对象一上调用哪个,在对象二上调用哪个:

template< typename ...Args>
void F(Obj obj);

template<typename ...Args1, typename ...Args2>
void G(Obj obj_1, Ojb obj_2)
{
F<Args1...>( obj_1 );
F<Args2...>( obj_2 );
}

现在如果我调用 G,哪个版本的 F 会在 obj_1 上调用,哪个版本会在 obj_2 上调用?如何在调用 G 时正确指定?

最佳答案

在这里使用 Tag 可能会有所帮助,因为您不能部分特化函数:

template <typename ... Ts>
struct Tag {};

template< typename ...Args>
void F(Obj obj) { /*...*/ }

template<typename ...Args1, typename ...Args2>
void G(Tag<Args1...>, Obj obj_1, Tag<Args2...>, Ojb obj_2)
{
F<Args1...>( obj_1 );
F<Args2...>( obj_2 );
}

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

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