There was a language called clay that was C compatible but had move semantics, destructors, templates and operator overloading.