gpt4 book ai didi

c++ - 如何选择部分模板特化?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:22:30 28 4
gpt4 key购买 nike

请解释一下模板特化选择的规则。我有一个例子:

template<typename T1, typename T2 = int>
struct S : false_type{};

template<typename T>
struct S<T, float> : true_type{};

cout << boolalpha << S<float>::value;

为什么输出是false?一般来说,在特殊类中默认模板参数 typename T2 = int 会发生什么?它是否引入了一些影响?

最佳答案

选择模板特化分为五个步骤:

  1. 采用主模板声明。 ( <T1, T2 = int> S )
  2. 填写用户指定的模板参数。 ( T1 <- float )
  3. 仅限函数模板:推导额外的模板参数。
  4. 对剩余的模板参数使用默认值。 ( T2 <- int )
  5. 使用偏序算法 (C++14 14.5.6.2) 选择最匹配的特化。 ( <float, int> 不匹配 <T, float> ,所以忽略特化;唯一的可能性是主模板)

关于c++ - 如何选择部分模板特化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35652212/

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