【发布时间】:2020-04-15 21:02:21
【问题描述】:
如果 C++ 允许 bool 使用任何位,是什么阻止 C++ 优化 std::optional 以使用 1 个字节并使用两个位来表示 has_value 和 value()?当然,我们会使用掩码,但在现代处理器中它不会损害性能。
【问题讨论】:
-
"如果 C++ 允许 'bool' 使用任何位" 从什么时候开始?
sizeof(bool) == 1。您是否建议将std::optional<bool>专门化为“特别”?我们已经有了这样一种思路造成的腹胀,不需要再多了。 -
我建议您创建一个
dv::optional_bool,它可以完成std::optional<bool>所做的所有事情,但内存占用更好。 -
不,拜托,不是另一个
std::vector<bool> -
@idclev463035818,没关系,我的大脑死了,忘记了
optional返回参考。