I noticed that gcc 4.7 implements the c++0x "final keyword" and jumped to test it. I'm hoping that eventually the keyword will be used to trigger "devirtualization optimization"
for instance in this example I expect "geta" and "getb" to be compiled in th every same object code struct A { virtual ~A(){} virtual int a() const final { return m_a;} int b() const { return m_a;} int geta() const; int getb() const; int m_a; }; int A::geta() const { return a();} int A::getb() const { return b();} Is such an optimization foreseen? at the moment this seems not to be the case g++ -O2 -std=c++0x -c final.cpp pb-d-128-141-131-124:ctest innocent$ otool -t -V -X final.o __ZNK1A4getaEv: movq (%rdi),%rax movq __ZNK1A4getbEv(%rax),%rax jmp *%rax nop nopw __ZNK1A4getaEv(%rax,%rax) __ZNK1A4getbEv: movl 0x08(%rdi),%eax ret (removing "final" generates the very same object code) thanks, Vincenzo