c++ - 如何使 `std::is_empty_v<T> && sizeof(T) > 1` 为真的类型 T?

标签 c++ c++11 types template-meta-programming typetraits

我在 here 遇到了一个有趣的测验问题。 :

Write a translation unit containing a class type T, such that std::is_empty_v<T> is true, and yet sizeof(T) is greater than 1.

我考虑了一段时间,但没有解决方案。

如何制作类型Tstd::is_empty_v<T> && sizeof(T) > 1是真的吗?

最佳答案

std::is_empty 检查是否没有成员。您可以使用对齐来强制大小大于 1:

struct alignas(2) T {};

static_assert(std::is_empty_v<T>);
static_assert(sizeof(T) > 1);

关于c++ - 如何使 `std::is_empty_v<T> && sizeof(T) > 1` 为真的类型 T?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70185461/

相关文章:

c++ - 如果它们是 16 字节对齐的,是否可以将 float 直接转换为 __m128?

c++ - 套接字编程和一般应用程序中对 localhost 的需求是什么?

C++ cin 在接受值之前需要 2 个或更多输入

c++ - 静态检测任何重载的 operator()

c++ - MSB 到 LSB 交换后保留符号和小数

javascript - 编写 .d.ts 文件以便我可以与 JavaScript 和 TypeScript 共享常量?

python - 如何将复杂包的 python 类型提示指定为 opencv 或 tensorflow?

c++ - 在 python 中嵌入 c++ 代码会让你的 python 应用程序更快吗?

c++ - "Member is private"虽然我不从外部访问它,但在使用尾随返回类型时

c# - 如何在C++中将对象作为参数传递?