何时使用__if_exists
而不编写大量低质量代码?
看起来这个关键字就像C预处理器指令,但是它在预处理器之后被处理。而且IntelliSense不解析它并将代码标记为死亡或活动状态。这些组合使得分析使用__if_exists
编写的代码变得非常复杂。
到目前为止,我只发现了一个相对安全的情况。我们有一个容器类,该类采用存储对象的地址。当存储的类具有重载的operator&
时,将调用该重载运算符,从而引起问题。
因此,我添加了以下检查:
__if_exists( T::operator& ) {
static_assert( false );
}
现在,如果类型存储中有一个operator&
成员函数,则代码至少不会编译。
我认为这个用例非常清晰易读。
还有哪些情况可以使用__if_exists
而不会得到大量难以阅读的代码?