【发布时间】:2022-01-08 02:50:59
【问题描述】:
我在here 遇到了一个有趣的测验问题:
编写一个包含类类型 T 的翻译单元,使得
std::is_empty_v<T>为真,但sizeof(T)大于 1。
我考虑了一段时间,但没有解决方案。
如何使T 的类型std::is_empty_v<T> && sizeof(T) > 1 为真?
【问题讨论】:
-
你能把
std::is_empty<T>专门用于你的类型吗?那是一种撒谎方式。 -
类 S { char c[2]; };模板 struct std::is_empty
: std::true_type { };你没有说它应该是有效的 C++ :P -
@TanveerBadar 那是未定义的。
-
@Mestkon 通过这种推理,每一个“我怎么能[某事]?”问题可以通过“试试 UB,也许它对你有用?”来回答。
-
@FrançoisAndrieux 从技术上讲,他们都可以:P。但是,它仍然是一个测验,测验并不总是在寻找正确的答案。它们可以包括技巧问题和类似的东西
标签: c++ c++11 types template-meta-programming typetraits