title: C++ concepts lite and type alias declaration
body: <p>Is it possible to use <code>typedef</code> or <code>using</code> to declare a type alias inside a concept, as proposed by the Concepts TS?
  If I try something like the following MWE, the code does not compile (with gcc 6.2.1 and the <code>-fconcepts</code> switch)</p>
  
  <pre><code>#include &lt;type_traits&gt;
  
  template&lt;typename T&gt;
  concept bool TestConcept ()
  {
      return requires(T t)
      {
          using V = T;
          std::is_integral&lt;V&gt;::value;
      };
  }
  
  int main()
  {
      return 0;
  }
  </code></pre>
  
  <p>Resulting error:</p>
  
  <pre><code>main.cpp: In function ‘concept bool TestConcept()’:
  main.cpp:8:9:  error: expected primary-expression before ‘using’  
           using V = T;  
           ^~~~~   
  main.cpp:8:9: error: expected ‘}’ before ‘using’
  main.cpp:8:9: error: expected ‘;’ before ‘using’
  main.cpp:4:14: error: definition of concept ‘concept bool TestConcept()’ has multiple  statements
   concept bool TestConcept ()  
                ^~~~~~~~~~~ 
  main.cpp: At global scope:
  main.cpp:11:1: error: expected declaration before ‘}’ token
   } 
   ^
  </code></pre>