I am aware of the most obvious differences; ie. that using
allows you to specify a new name for the type being introduced, but what is the difference between the following two statements:
template <typename T>
class Derived : public X<T>
{
using Base = X<T>;
using Type = typename Base::Type; // statement 1
using typename Base::Type; // statement 2
};
I've noticed that sometimes statement two doesn't work as expected. For example, I might get an error like "error: no member named 'Type' in X".
So how do these statements differ?