title: Prevent undesired conversion in constructor
body: <p>According to <a href="http://en.cppreference.com/w/cpp/language/explicit">here</a>, <code>explicit</code>:</p>
  
  <blockquote>
    <p>Specifies constructors and conversion operators (since C++11) that
    don't allow implicit conversions or copy-initialization.</p>
  </blockquote>
  
  <p>Thus, are these two techniques identical?</p>
  
  <pre><code>struct Z {
          // ...
          Z(long long);     // can initialize with a long long
          Z(long) = delete; // but not anything smaller
  };
  
  struct Z {
          // ...
          explicit Z(long long);     // can initialize ONLY with a long long
  };
  </code></pre>