小编use*_*407的帖子

具有超过5个参数的绳索的表达模板无法正确内联

我一直在用富有表现力的模板和绳索数据结构进行实验,试着看看可以实现什么样的收益.到目前为止它工作得非常好.但是,当尝试将多于5个参数连接在一起时,编译器无法正确优化并生成不必要的临时值.有人可以告诉我为什么会这样吗?是编译器限制还是我的优化选项需要调整?

我使用g ++ 4.4.1(mingw32)和以下选项:-O3 -Winline -Wextra -Wall -fno-exceptions -fno-rtti -fomit-frame-pointer -fexpensive-optimizations -fverbose-asm -S

代码如下,它只是一个实验,所以它并没有真正遵循任何标准:

#include <stdio.h>

template<typename Derived>
struct rope_base {
    const Derived & ref() const;
};

struct string {
    size_t m_length;
    char * m_value;

    template<typename Derived>
    string(const rope_base<Derived> & rope);
    ~string();

    const char * data() const;
    size_t length() const;
    char * write_to(char * dst) const;
};

struct static_string {
    const char * m_value;
    const size_t m_length;

    static_string(const char * value);

    size_t length() const;
    char * write_to(char * dst) const; …
Run Code Online (Sandbox Code Playgroud)

c++ optimization templates

5
推荐指数
1
解决办法
135
查看次数

标签 统计

c++ ×1

optimization ×1

templates ×1