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
::template
onpointee_impl
. template
is a reserved keywordpointee
seems 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?