我何时使用__if_exists而不写大量糟糕的代码?
看起来这个关键字就像C预处理器指令,但是在预处理器之后处理.并且IntelliSense不解析它并将代码强调为死或活.这些共同分析了用__if_exists非常重要的代码编写的代码.
到目前为止,我发现只有一个相对安全的案例 我们有一个容器类,它接受存储对象的地址.当存储的类有重载时operator&,调用重载的运算符会导致问题.
所以我添加了以下检查:
__if_exists( T::operator& ) {
static_assert( false );
}
Run Code Online (Sandbox Code Playgroud)
如果operator&成员函数是存储的类型,现在代码至少不会编译.
IMO这个用例非常清晰易读.
还有什么其他案例可以使用__if_exists而不会获得大量不可读的代码?
我认为你可以用它来区分联合和类,因为类确实有构造函数,而联合没有。
你会想要这个在例如boost::type_traits::is_class<T>和boost::type_traits::is_union<T>
| 归档时间: |
|
| 查看次数: |
1411 次 |
| 最近记录: |