gpt4 book ai didi

c++ - 实例化和特化的定义相互依赖

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:03:45 27 4
gpt4 key购买 nike

在标准中,[temp.spec]/4 sentence 2 states:

A specialization is a class, function, or class member that is either instantiated or explicitly specialized.

然而,[temp.inst]/1 sentence 1 states:

Unless a class template specialization has been explicitly instantiated or explicitly specialized, the class template specialization is implicitly instantiated when the specialization is referenced in a context that requires a completely-defined object type or when the completeness of the class type affects the semantics of the program.

所以特化是实例化的类/函数/成员,但在引用特化之前不会实例化?有人请给我解释一下。

最佳答案

  1. 显式实例化 → 完成,也成为特化
  2. 明确特化 → 完成,所以你获得了特化
  3. 否则

    · 在需要完整类型的上下文中引用特化
    · 但专业未知

    · 然后:

    → 编译器将尝试为您实例化它。
    → 这样做会产生您引用的特化的效果。

定义类自身循环。它只是说如果你在没有明确要求的情况下命名它,编译器会很聪明地为你做而不是提示。

基本上,这是允许我们使用模板而不必为我们将使用的所有类型显式实例化的规则。


将评论变成答案:

  • 可以将模板视为带有空白的食谱。例如:“T 派”。
  • 特化是一些空白(部分特化)或所有空白(完全特化)填充的配方
  • 引用特化只是命名它。例如,通过大声说出“苹果派”,我指的是我的 T 派食谱中的苹果特色。
  • 实例化实际上就是做馅饼。

做馅饼,我必须放实际的 Material ,所以做苹果派也让“苹果派”的概念存在了。

隐式实例化部分意味着您无需显式告诉编译器“使用那个 T 派食谱,您可以制作苹果派、梨派、韭菜派……”。当你向它要苹果派的那一刻,它就知道你的意思并做了一个派

关于c++ - 实例化和特化的定义相互依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54611751/

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