以下のコードは、規格では、undefined behaviorである。ill-formedかもしれない。 template < typename T> void f(T x) { g(x) ; } void g(int) { } int main() {// undefined behavior // g(int)は見つからないかもしれない。 f(0) ; } なぜ、undefined behaviorであり、ill-formedかもしれないのか。undefined behaviorなら、ill-formedになっても問題はない。しかし、あえてill-formedかもしれないというのは、このundefined behaviorの定義によるものだ。曰く、「ill-formedの場合、undefined behaviorである」と。つまり、本来ならill-formedであるプログラムが、und

