根据[temp.spec] p4,专门化是实例化或显式专门化的类/函数/ [...]。 [temp.expl.spec] p19指出某些显式专业化是模板,这使我相信显式专业化是专业化(在“从模板生成的实体”的意义上),而不是模板(有时)。
我的问题是,显式专业是实际的具体实体(类/函数/ [...]),还是它们的模板。如果不是,那么它们到底是不是模板或专业化对象(遵循[temp.spec] p4提供的定义)
答案 0 :(得分:2)
您的问题假定二进制状态不需要存在,明确的专业化名称是模板或“具体实体”。
显式专业化可能是也可能不是模板。非模板显式专门化是专门化。如您在正文中所述:
专门化是实例化或显式专门化的类,变量,函数或类成员。
因此,显式专业化的行为类似于专业化。模板实例化(隐式或显式)创建特殊化,除非参数与显式特殊化匹配。因此,这就是被使用的东西。但是,无论是通过实例化还是通过显式专业化生成,专业化都被视为专业化。
因此,例如,不是通过重载解析规则,而是通过模板参数推导来处理同一函数模板的不同显式专业。这与该模板的任何其他专业化情况没有什么不同。