gpt4 book ai didi

c++ - std::initializer_list可以专用吗?

转载 作者:行者123 更新时间:2023-12-01 15:12:59 24 4
gpt4 key购买 nike

在遍历列表初始化的各种规则时,我在dcl.init.list#3.6中发现了这一点:

Otherwise, if T is a specialization of std​::​initializer_­list<E>, the object is constructed as described below.



另一方面,在 std::initializer_list的摘要中,在 support.initlist中,我找到了以下语句:

If an explicit specialization or partial specialization of initializer_­list is declared, the program is ill-formed.



这些似乎是矛盾的说法,那么我有什么误解?

最佳答案

“模板特化”具有两个不同的含义:

  • “显式(完全)特化”或“部分特化”-一种语言构造,可为模板参数的某种组合更改模板的含义。
  • 通过将模板参数替换为模板而从模板生成的内容。
    换句话说,如果您为模板指定模板参数,则生成的type / function / variable / ...是该模板的特殊化。例如。 std::vector<int>std::vector的特殊化。

  • 好像您引用的第一段使用(2)。

    因此,“如果 Tstd​::​initializer_­list<E>的特化”,则大致意味着“如果存在这样的 E这样的 std::is_same_v<T, std::initializer_list<E>>”,或者“如果 T std::initializer_list<E>”。

    关于c++ - std::initializer_list可以专用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62010405/

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