> In practice, non-virtual function calls are reliably compiled to fairly efficient code while virtual calls are much less reliable.
Like I said, this echoes the conventional wisdom that most C++ developers seem to retain. The compiler landscape has changed since that wisdom was formed, since the advent of LTO and devirtualization optimizations.