c++ - 类中使用 'Curiously Recurring Template Pattern' 的方法是否由现代 C++ 编译器内联

标签 c++ compiler-optimization crtp

我有一段性能关键代码,我正在考虑使用 CRTP。我的问题是大多数编译器能够在多大程度上优化代码。特别是我想知道编译器是否可以内联(在适当的时候)方法。例如,在下面的代码中:

template <class Derived> 
struct Base
{
    void interface()
    {
        // ...
        static_cast<Derived*>(this)->implementation();
        // ...
    }
};

struct Derived : Base<Derived>
{
    void implementation();
};

调用 object.interface() 会产生与调用 object.implementation() 相同的性能吗?

最佳答案

很有可能。当然,只有一种方法可以确定。

关于c++ - 类中使用 'Curiously Recurring Template Pattern' 的方法是否由现代 C++ 编译器内联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6282848/

相关文章:

c++ - 2个线程如何共享同一个缓存行

c++ - 对容器中项目的常量正确指针访问

c++ - 使用 VC++ 的 __assume 是否可能带来可衡量的性能提升?

c++ - C++ 标准是否强制局部变量的引用捕获效率低下?

c++ - 为什么 g++ 使我的代码以不同于写入的顺序执行,我如何禁用此 "optimization"?

c++ - 模板函数重载 : enable_if for CRTP, 编译器坚持选择泛型函数

c++ - 极其简单的测试库

c++ - 指向已删除项的迭代器的有效性

C++ CRTP(模板模式)问题

c++ - 多级crtp如何将中级类型传递给上级