gpt4 book ai didi

C++ 组合参数模板元编程

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:34:19 25 4
gpt4 key购买 nike

我不熟悉 C++ 中的模板和元编程。我现在要做的是:我有一个带有模板的结构,该模板需要类型为 char 的非类型可变参数包,简单地定义如下:

template <char ... chs> 
struct MyStruct
{};

我有第二个结构模板,它需要两种类型,如下所示:

template <typename ch1, typename ch2>
struct Together
{

};

我想要实现的是:

cout << Together<MyStruct<'a','b'>, MyStruct<'c','d'>>::result << '\n';

必须打印:abcd

提前致谢

最佳答案

使用模板,您可以通过部分特化实现模式匹配。像这样声明一个主模板声明:

template <typename First, typename Second>
struct Together;

然后以某种方式为具有“外观”的类型定义部分特化:

template <char... ch1s, char... ch2s>
struct Together<MyStruct<ch1s...>, MyStruct<ch2s...>>
{
std::string result;
Together() : result({ch1s..., ch2s...}){}
};

关于C++ 组合参数模板元编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28798906/

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