using a1 = decltype(bar()); using b1 = decltype(bar()); using c1 = decltype(foo::bar()); using d1 = decltype(*(bar())); using e1 = decltype(*(foo::bar())); using a2 = decltype( bar ( ) ); using b2 = decltype( bar < int > ( ) ); using c2 = decltype( foo::bar < int > ( ) ); using d2 = decltype( *( bar < int > ( ) ) ); using e2 = decltype( *( foo::bar < int > ( ) ) ); using a3 = decltype( bar ( 0 ) ); using b3 = decltype( bar < int > ( 0 ) ); using c3 = decltype( foo::bar < int > ( 0 ) ); using d3 = decltype( *( bar < int > ( 0 ) ) ); using e3 = decltype( *( foo::bar < int > ( 0 ) ) ); using x1 = decltype((0)); using x2 = decltype( ( 0 ) );