【问题标题】:In-class static member initialization类内静态成员初始化
【发布时间】:2023-03-18 22:00:01
【问题描述】:

给定

struct X {};

constexpr auto x = X{};

struct S {
    static constexpr auto& rx = x;  
};

gcc 4.8 说

错误:静态成员'S::rx'的非常量类内初始化无效

static constexpr auto& rx = x;  
                            ^

错误:(需要类外初始化)

错误:'S::rx' 在声明时不能由非常量表达式初始化

我希望x 是一个常量表达式,适合这样的初始化。这是一个 gcc 错误吗?如果不是,这是怎么回事?

【问题讨论】:

标签: c++ c++11 static-members constant-expression in-class-initialization


【解决方案1】:

这是一个错误,它似乎是already reported

【讨论】:

    【解决方案2】:

    您可以改为执行以下操作:

    struct X {};
    
    const auto x = X{};
    
    struct S {
        static constexpr auto& rx = x;  
    };
    

    【讨论】:

      猜你喜欢
      • 2011-07-18
      • 2015-05-18
      • 2011-01-19
      • 2013-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多