Why virtual inheritance is not used as default? Default as in by the programmer and not the language.
If not, why? What are the cases where it may fail? Is there some run time overhead? Is it significant?
The motivation of this question comes from Stairway to heaven pattern. Its usage is not completely transparent, because of the use of virtual inheritance. If virtual inheritance was the default behaviour, it could have been used transparently. I am not saying it should be virtual by default because of this pattern.