相关疑难解决方法(0)

静态成员访问常量表达式

访问静态类成员函数或变量可以通过两种方式完成:通过对象(obj.member_fun()obj.member_var)或通过类(Class::member_fun()Class::member_var).但是,在constexpr函数中,Clang在对象访问时出错,需要使用类访问:

struct S 
{
    constexpr static auto s_v = 42;    
    constexpr static auto v() { return s_v; }
};

#define TEST 1

constexpr auto foo(S const& s [[maybe_unused]]) 
{
#if TEST
    constexpr auto v = s.v();   // ERROR for clang, OK for gcc
#else    
    constexpr auto v = S::v();  // OK for clang and gcc
#endif
    return v;
}

constexpr auto bar(S const& s [[maybe_unused]])
{
#if TEST   
    constexpr auto …
Run Code Online (Sandbox Code Playgroud)

c++ clang static-members constexpr c++17

9
推荐指数
1
解决办法
630
查看次数

标签 统计

c++ ×1

c++17 ×1

clang ×1

constexpr ×1

static-members ×1