gpt4 book ai didi

templates - SFINAE:检查两个可变参数包的串联是否与一个包相同

转载 作者:行者123 更新时间:2023-12-04 23:14:41 27 4
gpt4 key购买 nike

有没有办法检查两个可变参数包的串联是否与第三个可变参数包相同。

template<typename... Args>
struct ClassOne
{
}

template<typename... Args>
struct ClassTwo
{
}

template<typename... Args>
struct ClassThree
{
}

template<typename... PackA, typename... PackB, typename... PackC>
void foo(ClassOne<PackA...>, ClassTwo<PackB...>, ClassThree<PackC...>)
{
}

我希望 foo 仅在 PackA... = PackB..., PackC... 时启用

最佳答案

比较直接...

template <typename ...>
struct pack{};

template<typename... PackA, typename... PackB, typename... PackC,
typename = typename std::enable_if
<std::is_same<pack<PackA...>,
pack<PackB..., PackC...>>::value
>::type>
void foo(ClassOne<PackA...>, ClassTwo<PackB...>, ClassThree<PackC...>)
{
}

关于templates - SFINAE:检查两个可变参数包的串联是否与一个包相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46012620/

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