forall(otype T) struct wrap { T val; }; forall(otype T) int ?==? (wrap(T) lhs, wrap(T) rhs) { return 0; } /* struct wrap(int) 0; /*/ forall(otype T) struct wrap(T) 0; //*/ int main(int argc, char const *argv[]) { wrap(int) test; if(test == 0) { return 1; } return 0; }