这可能是双重爆炸技巧的示例,请参阅《安全布尔成语》有关更多详细信息 ”。在这里,我总结了文章的第一页。
在C ++中,有许多种方法可以为类提供布尔测试。 
  一种明显的方法是operator bool转换运算符。
// operator bool version
  class Testable {
    bool ok_;
  public:
    explicit Testable(bool b=true):ok_(b) {}
    operator bool() const { // use bool conversion operator
      return ok_;
    }
  };
我们可以测试课程,
Testable test;
  if (test) 
    std::cout << "Yes, test is working!\n";
  else 
    std::cout << "No, test is not working!\n";
但是,opereator bool由于它允许诸如test << 1;或的无意义的操作,因此被认为是不安全的int i=test。
  使用operator!比较安全,因为我们避免了隐式转换或重载问题。
实现很简单,
bool operator!() const { // use operator!
    return !ok_;
  }
测试Testable对象的两种惯用方式是
  Testable test;
  if (!!test) 
    std::cout << "Yes, test is working!\n";
  if (!test2) {
    std::cout << "No, test2 is not working!\n";
第一个版本if (!!test)被某些人称为“ 双爆炸”把戏。