template < bool C, class T, class F>
struct select_if
{
typedef T type;
} ;
template < class T, class F>
struct select_if< false , T, F>
{
typedef F type;
} ;
template < class T>
class A
{
typedef struct { } type;
} ;
template < class T>
class B : public select_if< true , A< T> , A< T> > :: type
{
typename A< T> :: type insert( ) ; // syntax error at 'type'? Why?
} ;
dGVtcGxhdGU8Ym9vbCBDLCBjbGFzcyBULCBjbGFzcyBGPgpzdHJ1Y3Qgc2VsZWN0X2lmCnsKICAgIHR5cGVkZWYgVCB0eXBlOwp9OwoKdGVtcGxhdGU8Y2xhc3MgVCwgY2xhc3MgRj4Kc3RydWN0IHNlbGVjdF9pZjxmYWxzZSwgVCwgRj4KewogICAgdHlwZWRlZiBGIHR5cGU7Cn07Cgp0ZW1wbGF0ZTxjbGFzcyBUPgpjbGFzcyBBCnsKICAgIHR5cGVkZWYgc3RydWN0IHsgfSB0eXBlOwp9OwoKdGVtcGxhdGU8Y2xhc3MgVD4KY2xhc3MgQiA6IHB1YmxpYyBzZWxlY3RfaWY8dHJ1ZSwgQTxUPiwgQTxUPiA+Ojp0eXBlCnsKICAgIHR5cGVuYW1lIEE8VD46OnR5cGUgaW5zZXJ0KCk7ICAgICAgICAgICAgICAgICAgICAgLy8gc3ludGF4IGVycm9yIGF0ICd0eXBlJz8gICBXaHk/Cn07