title: Why can't decomposition declarations be constexpr?
body: <p>Consider the following snippet to test the upcoming C++17 feature decomposition declarations (formerly known as structured bindings)</p>
  
  <pre><code>#include &lt;cassert&gt;
  #include &lt;utility&gt;
  
  constexpr auto divmod(int n, int d)
  {
      return std::make_pair(n / d, n % d); // in g++7, also just std::pair{n/d, n%d}
  }
  
  int main()
  {
      constexpr auto [q, r] = divmod(10, 3);
      static_assert(q == 3 &amp;&amp; r ==1);
  }
  </code></pre>
  
  <p>This fails on both g++7-SVN and clang-4.0-SVN with the message: </p>
  
  <blockquote>
    <p>decomposition declaration cannot be declared 'constexpr'</p>
  </blockquote>
  
  <p>Dropping the <code>constexpr</code> definition and changing to a regular <code>assert()</code> works on both compilers.</p>
  
  <p>None of the WG21 papers on this feature mention the <code>constexpr</code> keyword, neither in the positive nor the negative. </p>
  
  <p><strong>Question</strong>: why aren't decomposition declarations be allowed to be <code>constexpr</code>? (apart from "because the Standard says so").</p>