繁体   English   中英

联合类型的模板特化

[英]Template specialization for union type

如何为union类型专门化模板? 假设我有模板功能

template <typename T>
void foo(T value);

如果T不是任何union类型,我想禁止调用此函数。 我怎样才能做到这一点?

如果T不是任何联合类型,我想禁止调用此函数。 我怎样才能做到这一点?

也许用std::is_union

template <typename T>
std::enable_if_t<std::is_union<T>::value> foo(T value)
 { /* ... */ }

您可以将std::enable_ifstd::enable_if_t )与来自<type_traits> std::is_union一起使用。 就像是:

template <class T,
   typename std::enable_if_t<std::is_union<T>::value,
   int> = 0>
   void foo(T t) {
   // an implementation for union types
}

以下是SFINAE规则的解释。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM