C ++:类的定义中的sizeof(member)

时间:2019-03-29 15:34:23

标签: c++ c++11 sizeof

以下代码格式正确吗?

#include <cstddef>

struct Test
{
    int      member;
    static constexpr const size_t   Size1 = sizeof(member);
    static constexpr const size_t   Size2 = sizeof(decltype(member));
    static constexpr const size_t   Size3 = sizeof(Test::member);
};

问题是在类本身的定义中使用了sizeof(member)。所有Size1Size2Size3初始化程序在gcc,clang和较新的MSVC上都运行良好。但是MSVC 14对Size1不满意(其他两个都可以)。它说:

  

错误C2327:'Test :: member':不是类型名称,静态或枚举器

这使我感到困惑,因为member(无论是否合格)在该类的上下文中似乎是一个有效的表达式。

因此,我应该将此视为旧版MSVC中的错误,还是这样的错误消息合理?

0 个答案:

没有答案