title: Why did set's constructor change in C++14?
body: <p>While answering a question, I noticed that <a href="http://en.cppreference.com/w/cpp/container/set/set" rel="nofollow noreferrer"><code>std::set</code>'s constructor</a> changed in C++14:</p>
  
  <pre><code>// Until C++14:
  explicit set( const Compare&amp; comp = Compare(), 
                const Allocator&amp; alloc = Allocator() );
  
  // Since C++14:
  set() : set( Compare() ) {}
  explicit set( const Compare&amp; comp, 
                const Allocator&amp; alloc = Allocator() );
  </code></pre>
  
  <p>I can't figure out what functional difference this makes, other than speculating that it could have something to do with some fancy metaprogramming that requires an honest-to-gods default constructor to do its work.</p>
  
  <p><strong>Why was this change made?</strong></p>