prog.cpp: In instantiation of ‘struct trait<int>’:
prog.cpp:6:19: required from here
prog.cpp:4:44: error: ‘int’ is not a class, struct, or union type
prog.cpp: In function ‘int main()’:
prog.cpp:24:13: error: no matching function for call to ‘f(int)’
prog.cpp:24:13: note: candidate is:
prog.cpp:7:6: note: template<class T, class U> void f(int)
prog.cpp:7:6: note: substitution of deduced template arguments resulted in errors seen above
prog.cpp: In instantiation of ‘struct X<int>’:
prog.cpp:10:19: required from here
prog.cpp:19:5: error: static assertion failed: ...