title: Default construction of deleted constructor with braced initializer list
body: <p>Let's say that I want to disable the construction of class, then I can do the following (as per <a href="https://stackoverflow.com/questions/14137853/best-style-for-deleting-all-constructors-or-other-function">Best style for deleting all constructors (or other function)?
  </a>):</p>
  
  <pre><code>// This results in Example being CopyConstructible:
  struct Example {
    Example() = delete;
  };
  </code></pre>
  
  <p>or</p>
  
  <pre><code>struct Example {
    template &lt;typename... Ts&gt;
    Example(Ts&amp;&amp;...) = delete;
  };
  </code></pre>
  
  <p>or</p>
  
  <pre><code>struct Example {
    Example(const Example&amp;) = delete;
  };
  </code></pre>
  
  <p>where the first example can still be copied if constructed (which the intention is to disable), but the second two will disable <strong>almost</strong> all methods for creating <code>Example</code>. If I default construct any of the above using an empty braced initializer list, then the instance is successfully constructed. In Meyer's Effective Modern C++ he gives the example (bottom of page 51):</p>
  
  <pre><code>Widget w3{}; // calls Widget ctor with no args
  </code></pre>
  
  <p>which I would thus expect to fail for the above <code>Example</code> classes i.e:</p>
  
  <pre><code>Example e{};
  </code></pre>
  
  <p>should not construct since it should call the deleted default constructor. However, it does, is usable, and if defined as the first case above, is also copyable. See <a href="http://coliru.stacked-crooked.com/a/fb2fa42f83a6f0a0" rel="nofollow noreferrer">live demo</a>. My question is: Is this correct, and if so, why? Also, if this is correct, how do I <strong>completely</strong> disable the destruction of the class? </p>