根据[temp.spec] p4的说法,专门化是一个类/函数/...实例化的或显式专门化的。[temp.expl.spec] p19指出,一些显式专门化是模板,这使我相信显式专门化是专门化(在“从模板生成的实体”意义上),而不是模板(有时)。
我的问题是,显式的特殊化是实际的具体实体(类/函数/...),还是模板。如果不是,它们到底是什么?它们不是模板或专门化(遵循temp.spec p4提供的定义)
发布于 2019-05-29 12:19:11
您的问题假设不需要存在的二元状态,即显式专门化要么是一个模板,要么是一个“具体实体”。
显式专门化可以是模板,也可以不是模板。非模板显式专门化是一种专门化。正如你引用的文本中所说的:
专门化是实例化或显式专门化的类、变量、函数或类成员。
因此,显式专门化的行为类似于专门化。模板实例化(隐式或显式)创建专门化,除非参数与显式专门化匹配。因此,这就是我们要用到的东西。但是,无论是通过实例化还是通过显式专门化生成的,专门化都被视为专门化。
因此,例如,处理同一函数模板的不同显式专用化,不是通过重载解析规则,而是通过模板参数推导。这与该模板的任何其他专门化情况没有什么不同。
https://stackoverflow.com/questions/56352660
复制相似问题