title: Could it possible to make functions' noexcept declaration auto in a future version of standard?
body: <p>The current C++ standard enables compilers to look into the function body for information to complete a function's signature:</p>
  
  <pre><code>template &lt;typename T&gt;
  inline auto dereference(T const&amp; pointer) {
      return *pointer;
  }
  </code></pre>
  
  <p>And I wonder if the compiler could automatically declare whether a function is nothrow guaranteed if the definition can be seen, maybe with syntax like this:</p>
  
  <pre><code>void func() noexcept(auto) {
      … // If all operations in the function are noexcept, the
        // function can be automatically declared noexcept
  }
  </code></pre>
  
  <p>If that is possible, it would saves much trouble in writing the noexcept declaration, especially when writing templates, where functions are usually followed by their definitions on their first appearence:</p>
  
  <pre><code>// The noexcept declaration can be even longer than the function body
  template &lt;typename T&gt;
  void func(T&amp; value) noexcept(
      noexcept(value.member_1()) &amp;&amp;
      noexcept(value.member_2()) &amp;&amp;
      noexcept(value.member_3())
  ) {
      value.member_1();
      value.member_2();
      value.member_3();
  }
  
  // Things will become much easier if the C++ standard support this feature
  template &lt;typename T&gt;
  void func(T&amp; value) noexcept(auto) {
      value.member_1();
      value.member_2();
      value.member_3();
  }
  </code></pre>
  
  <p>So, is this feature possible to enter a future version of ISO/IEC 14882?</p>