c++ - C++:类定义中的sizeof(member)
问题描述
下面的代码格式正确吗?
#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)
用于类本身的定义。所有Size1
,Size2
和Size3
初始化程序都与 gcc、clang 和更新的 MSVC 配合得很好。但是 MSVC 14 不满意Size1
(其他两个都可以)。它说:
错误 C2327:“Test::member”:不是类型名称、静态或枚举数
这让我感到困惑,因为member
(无论是否合格)在该类的上下文中似乎是一个有效的表达。
那么,我应该将此视为旧 MSVC 中的错误,还是这样的错误消息合理?
解决方案
推荐阅读
- c# - MVC 核心选择标签不更新字段值
- c - 使用来自 adc 外设的回调更改结构内的变量值
- oracle - 如果不存在则加入
- javascript - 如何使切片成为 FusionChart js multilevelpie 中的链接?
- r - 在 Watson Studio 中保存和部署 R 模型
- sql-server - Powershell:在多个 SQL 服务器上创建存储过程
- odoo - 如何禁用附件表单视图odoo11中的清除按钮?
- command-line-arguments - 如何检查 GNU Make 是否支持 Guile
- html - 在 IE 中单击输入框时如何隐藏“|”光标符号?
- node.js - 仅在状态更新时执行获取请求