gpt4 book ai didi

c++ - 从结构中获取所有可变参数模板类型,该结构是函数模板中的类型参数

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

这是一个最小的例子:

template<typename ...Types>
struct Pack {};

template<typename ...TemplateTemplateTypes>
bool AllConstructible()
{
return (std::is_constructible_v
</*do something to archive all types in every TemplateTemplateType*/>
and ... and true);
}

struct Empty{};

int main()
{
std::cout << std::boolalpha << AllConstructible<Pack<int, const int&>, Pack<Empty>>();
}

函数AllConstructible将返回 true iif 所有 is_constructible_v<Pack's Types>坚持下去。

Pack的定义里面很容易实现所有类型(只用Types...),但在外面怎么办呢?

最佳答案

您可以侵入一个无法解压参数的辅助模板:

template<typename ...Types>
struct Helper;

template<typename ...Types>
struct Helper<Pack<Types...>>
{
static constexpr bool value{std::is_constructible_v<Types...>};
};

template<typename ...TemplateTemplateTypes>
bool AllConstructible()
{
return (Helper<TemplateTemplateTypes>::value and ... and true);
}

关于c++ - 从结构中获取所有可变参数模板类型,该结构是函数模板中的类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55773659/

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