title: Template parameters to constexpr
body: <p>I am trying to pass a more "generic" const input parameter to a constexpr implementation for fibonacci. When I replace the template parameter with an int, things are hunky-dory again.</p>
  
  <pre><code>#include&lt;iostream&gt;
  template &lt;typename T&gt;
  constexpr auto fib_ce(T n) {
     return (n&gt;1) ? fib_ce(n-1)+fib_ce(n-2) : 1;
  }
  
  int main() {
     std::cout&lt;&lt;fib_ce(4)&lt;&lt;"\n";
  }
  </code></pre>
  
  <p>This is the error I get:</p>
  
  <pre><code>g++ -std=c++14 -o constexpr_fib constexpr_fib.cpp 
  constexpr_fib.cpp:4:19: fatal error: recursive template instantiation exceeded maximum depth of 256
     return (n&gt;1) ? fib_ce(n-1)+fib_ce(n-2) : 1;
  
                ^
  </code></pre>
  
  <p>How do I provide a template argument to a constexpr, that can take inputs like long, int, unsigned long, etc etc for this constexpr</p>