I was looking through the boost::python source code and found this snippet:
template <class T>
struct pointee
: pointee_impl<is_pointer<T>::value>::template apply<T>
{
};
I have never seen anything like this before. I am surprised this compiles for a few reasons:
- There is no member named
::templateonpointee_impl. templateis a reserved keywordpointeeseems to inherit from two values separated by a space
Is there another use of the template keyword that I am not aware of? What's going on here?