在标准中,[temp.spec] / 4句子2指出:
专门化是实例化或显式专门化的类,函数或类成员。
但是,[temp.inst] / 1句1指出:
除非已明确实例化或明确指定了类模板专业化,否则当在需要完全定义的对象类型的上下文中引用该专业化或类类型的完整性影响语义时,将隐式实例化该类模板专业化该程序的内容。
因此,专门化是实例化的类/函数/成员,但是在引用专门化之前不会实例化吗?有人请向我解释一下。
答案 0 :(得分:1)
否则
·在需要完整类型的上下文中引用专业化
·但是专业化尚不明确
·然后:
→编译器将尝试为您实例化它。
→这样就可以创建您引用的专业化。
定义本身在其上循环。它只是说,如果您在没有明确要求的情况下命名它,那么编译器会聪明地为您做,而不是抱怨。
基本上,这是允许我们使用模板而不必为要使用的所有类型显式实例化的规则。
将评论添加到答案中
要煮派,我必须放入实际的配料,因此煮苹果派也使“苹果派”的概念存在。
隐式实例化部分意味着您不需要显式地告诉编译器“使用该T饼配方,您可以制作苹果派,梨派,韭菜派……”。当您要苹果派的那一刻,它就知道您的意思并煮了一个派