Andi Kleen wrote: >> I think virtual functions are on the edge; quite useful, but do result >> in the compiler adding a pointer to data objects and in uninlinable >> indirect calls at run-time. Therefore, I would avoid them in the > > Is that still true given profile feedback and the recent > devirtualization work? I would assume the common case > to get inlined then anyways.
I don't think we have enough evidence to make that a safe assumption. I would prefer to be conservative in making this transition; we have a consensus that we want to use C++, but quite a few people who are concerned about what that means in practice, and so I think we should make the transition slowly and carefully. Don't get me wrong; I think virtual functions are very useful. The "target hooks" and "language hooks" we have are essentially "poor man's" virtual functions, and we could naturally (and mechanically) convert them to actual virtual functions. That's why I think virtual functions are on the edge. If the consensus is that it's OK to use them now that's OK by me, but I'd prefer to keep them out of the initial set of coding guidelines. I would, however, expect that they will be one of the first advanced features to make their way into GCC in the future. -- Mark Mitchell CodeSourcery m...@codesourcery.com (650) 331-3385 x713