首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从结构体中获取所有可变模板类型,该结构体是函数模板中的类型参数

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

Stack Overflow用户
提问于 2019-04-20 20:48:01
回答 1查看 44关注 0票数 1

下面是一个最小的例子:

代码语言:javascript
复制
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>>();
}

如果所有is_constructible_v<Pack's Types>都为true,则函数AllConstructible将返回true。

Pack定义内实现所有类型(只需使用Types...)是很容易的,但如何在外部实现呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-20 21:13:49

你可以使用一个辅助模板来解包参数:

代码语言:javascript
复制
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);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55773659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档