在 C 中,通常需要确定给定类型是否是特定类模板的特化。考虑下面的例子:
template <class t> struct A {};</class>
我们如何确定 CompareT 是否是 A对于以下代码中的某些类型 *?
template<class comparet> void compare(){ // is this A ? cout , CompareT >::value; // A ???? } int main(){ compare >(); }</class>
例如,这里 A
解决方案:
要实现此目的,我们可以利用名为 is_specialization 的自定义元函数:
template <class t template> class Template> struct is_specialization : std::false_type {}; template <template> class Template, class... Args> struct is_specialization<template>, Template> : std::true_type {};</template></template></class>
此元函数返回 true如果 T 是 Template 的特化,否则为 false。说明其用法:
static_assert(is_specialization<:vector>, std::vector>{}, ""); static_assert(!is_specialization<:vector>, std::list>{}, "");</:vector></:vector>
以上是如何确定 C 中的模板专业化?的详细内容。更多信息请关注PHP中文网其他相关文章!