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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从结构中获取所有可变参数模板类型,该结构是函数模板中的类型参数相关的知识,希望对你有一定的参考价值。

这是一个最小的例子:

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>>();
}

如果所有qazxsw poi都成立,则函数qazxsw poi将返回true。

AllConstructible的定义中很容易实现所有类型(只需使用is_constructible_v<Pack's Types>),但如何在外面做到?

答案

您可以插入一个解压缩参数的帮助器模板:

Pack

以上是关于从结构中获取所有可变参数模板类型,该结构是函数模板中的类型参数的主要内容,如果未能解决你的问题,请参考以下文章

从可变参数模板中扩展的 decltype 继承

层次结构中的反向可变模板参数

C/C++中的可变参数和可变参数模板

如何在可变参数类模板中获取类型的索引?

如何使用可变参数模板参数保存可变数量的参数?

C++11 中的非类型可变参数函数模板