gpt4 book ai didi

c++ - 与可变参数模板一起使用

转载 作者:太空宇宙 更新时间:2023-11-04 13:05:23 24 4
gpt4 key购买 nike

我知道下面的代码可以编译:

template<class Type>
class Foo
{
using type = Type;
};

现在,我正在尝试编译以下代码:

template<class Type, class... OtherTypes>
class Foo
{
using type = Type;
// using types = OtherTypes;
// using... types = OtherTypes;
// using types... = OtherTypes;
// using types = OtherTypes...;
// using types... = OtherTypes...;
};

我尝试了注释中代码的所有选项,但没有一个可以编译。我该如何解决?

最佳答案

您不能将一组类型作为类中的一个类型。

你能得到的最接近的大致是:

template<class...Ts> struct types_t { constexpr types_t(){}; };
template<class...Ts> constexpr types_t<Ts...> types{};

这些是表示类型包的值和类型。

template<class Type, class... OtherTypes>
class Foo
{
using type=Type;
using types=types_t<OtherTypes...>;
};

然后我们可以编写使用捆绑类型并在其他地方使用它们的辅助函数。

template<template<class...>class Z, class Types>
struct apply_types;
template<template<class...>class Z, class...Ts>
struct apply_types<Z, types_t<Ts...>> {
using type=Z<Ts...>;
};

template<template<class...>class Z, class Types>
using apply_types_t = typename apply_types<Z,Types>::type;

现在apply_types< some_template, some_types_t >获取包中的类型并将它们传递给模板。

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

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