gpt4 book ai didi

c++ - 什么时候类型相等(模板特化)?

转载 作者:行者123 更新时间:2023-11-30 00:48:50 25 4
gpt4 key购买 nike

我将配置存储为类型:

using CONFIG1 = Config<x, y, z>;
using CONFIG2 = Config<a, b, c>;
using CONFIG3 = Config<x, y, z>;

对于每个配置,都有一个类模板特化,它做一些更多的配置工作:

template <class CONFIG>
MyClass;

template <>
MyClass<CONFIG1>{...}

template <>
MyClass<CONFIG2>{...}

template <>
MyClass<CONFIG3>{...}

现在,如您所见,CONFIG1 恰好与 CONFIG3 具有相同的定义。

问题是:

  1. CONFIG1CONFIG3 将采用哪个特化,或者:什么时候类型相等?是它的名称还是是实际内容吗?

  2. 如果是实际内容,如何实现CONFIG1CONFIG3实际调用不同的特化?

最佳答案

CONFIG1CONFIG3 是同一类型,因此您的特化将失败并显示

error: redefinition of 'struct MyClass<Config<x, y, z> >'
struct MyClass<CONFIG3>{};

您可以使用继承来创建新类型:

using CONFIG1 = Config<x, y, z>;
struct CONFIG3 : CONFIG1{};

实例:https://ideone.com/4GrlaW

关于c++ - 什么时候类型相等(模板特化)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30558373/

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