CRTP の使用を検討しているパフォーマンス クリティカルなコードがあります。私の質問は、ほとんどのコンパイラがコードをどの程度最適化できるかということです。特に、コンパイラが(適切な場合に)メソッドをインライン化できるかどうか疑問に思っています。たとえば、次のコードでは:
template <class Derived>
struct Base
{
void interface()
{
// ...
static_cast<Derived*>(this)->implementation();
// ...
}
};
struct Derived : Base<Derived>
{
void implementation();
};
への呼び出しと同じパフォーマンスをobject.interface()
もたらす呼び出しobject.implementation()