It is easier to delete unwanted defaults than implementing dummies.

  class C{
    // explicit C(){ unreachable(); } // note: may be ill formed.
    explicit C() = delete;
    [..]
  };

The use of “delete” will produce errors at compile time, much like correcly placed dummies. It's nice to have a real language feature here, to not need to resort to dummies.

NB: There is still a hole. If you don't either delete or make a dummy, you can still get caught.