How does "Injected Class Names" and :: work?

Viewed 43

I read about the Injected Class Name and they showed such an example:

template <template<typename> class TT> class X
{

};

template<typename T> class C {
    C* a;
    C<void>& b;
    X<C> c;
    X<::C> d;
};

And I'm not sure I understand how it works correctly .For example the line :

X<C> c;

am I right that this is equivalent to X<C<T>> c; ?

But most of all I don't understand what it means X<::C> d; If it sees the class template definition then what will it substitute instead of T? I will be glad to receive answers

0 Answers
Related