C++11 alias templates
<p>I ran to some problems with c++11 alias templates. As you can see below, I want to create an alias to A::B from class C. Before instantiation is made the compiler (gcc 6.1) cannot assert that V has a member type B, therefore giving the error:</p>

<pre><code>error: expected ‘;’ before ‘&lt;’ token  
template&lt;typename ValueT&gt; using B = typename V::B&lt;ValueT&gt;;
</code></pre>

<p>Does not his go against the usual way templates are dealt with in C++, that is assuming that the template type provides all necessary functionalities until proven otherwise by an instantiation?</p>

<pre><code>template&lt;typename T&gt; class A{
    T a;
public:
    template &lt;typename ValueT&gt; class B {
        ValueT b;
    };
};

template &lt;typename V = A&lt;int&gt;&gt; class C {
public:
    template&lt;typename ValueT&gt; using B = typename V::B&lt;ValueT&gt;;
};
</code></pre>