Rob*_*tra 5 c++ templates metaprogramming
我是C++中模板和元编程的新手.我现在要做的是以下内容:我有一个带有模板的结构,它需要类型为char的非类型可变参数包,定义如下:
template <char ... chs>
struct MyStruct
{};
Run Code Online (Sandbox Code Playgroud)
我有第二个结构模板,需要两种类型,如下所示:
template <typename ch1, typename ch2>
struct Together
{
};
Run Code Online (Sandbox Code Playgroud)
我想要实现的是:
cout << Together<MyStruct<'a','b'>, MyStruct<'c','d'>>::result << '\n';
Run Code Online (Sandbox Code Playgroud)
哪个必须打印:abcd
提前致谢
使用模板,您可以通过部分专业化来实现模式匹配。声明一个主模板声明,如下所示:
template <typename First, typename Second>
struct Together;
Run Code Online (Sandbox Code Playgroud)
然后以某种方式为具有“外观”的类型定义部分特化:
template <char... ch1s, char... ch2s>
struct Together<MyStruct<ch1s...>, MyStruct<ch2s...>>
{
std::string result;
Together() : result({ch1s..., ch2s...}){}
};
Run Code Online (Sandbox Code Playgroud)