1X input.hpp /^template <class T> struct X { };$/;" s 2Y input.hpp /^template <int N> struct Y { };$/;" s 3M input.hpp /^#define M /;" d 4S input.hpp /^struct S {$/;" s 5i input.hpp /^ int i;$/;" m struct:S typeref:typename:int 6y input.hpp /^ Y<0> y;$/;" m struct:S typeref:typename:Y<0> 7x0 input.hpp /^ X< Y< 1 > > x0;$/;" m struct:S typeref:typename:X<Y<1>> 8x1 input.hpp /^ X< Y< 1 + 2 > > x1;$/;" m struct:S typeref:typename:X<Y<1+2>> 9x2 input.hpp /^ X< Y< 1 << 2 > > x2;$/;" m struct:S typeref:typename:X<Y<1<<2>> 10x3 input.hpp /^ X< Y< M << 2 > > x3;$/;" m struct:S typeref:typename:X<Y<M<<2>> 11x4 input.hpp /^ X< Y< M << M > > x4;$/;" m struct:S typeref:typename:X<Y<M<<M>> 12d input.hpp /^ double d;$/;" m struct:S typeref:typename:double 13