It's perceived to be evil because it's just more complex and raises more issues than people typically expect, especially where base classes are not purely abstract (no data members). Diamond inheritance can be solved using virtual inheritance, where a common base is shared. And compilers can catch method signature collisions. Used well, it can produce elegant and DRY solutions that are otherwise more verbose to implement via interface and compositions/delegations.
One common MI idiom in C++ is for complex wrapper constructors where base contructor needs to be constructed with non-trivial member objects, and since base objects need to be constructed before member objects, the trick is to use MI (the "base from member" idiom.), otherwise you have to use a factory and more steps to do the construction like Java does (Java doesn't have MI for non-interface classes).
Don't be afraid of it and use it when appropriate (though it might take some practice to spot a good fit).