I think that breaks down as soon as templates are involved, which is very pervasive in C++ codebase.
Given
template<typename T, typename sometype>
void foo(T<sometype>& baz)
It's not so straightforward anymore.It can still apply the operation anytime a specialized object is defined. (This is how templates are compiled, right?)
In C++'s case, the transformation tool has much more information, so more things are possible to do.
E.g. let's take the ".erase" case from the article. In python, a method
can't simply change "remove" to "erase", because it has no idea what type "bar" has.A C++ tool sees
and can then safely change "remove" to "erase".