可变意义逻辑常量是否存在任何强制机制? C++关键字可变,允许我们在const对象中有非const成员。这就提出了一个问题,“什么?为什么,这一点已经在今天讨论过了

可变意义逻辑常量是否存在任何强制机制? C++关键字可变,允许我们在const对象中有非const成员。这就提出了一个问题,“什么?为什么,这一点已经在今天讨论过了,c++,constants,language-lawyer,mutable,C++,Constants,Language Lawyer,Mutable,选择的答案是mutable的正确用法是表示逻辑常量,而不是按位常量。其他几个问题和答案也提出了同样的观点。我在概念上喜欢这些答案,但它们有什么意义吗 < > C++中没有机制来执行逻辑const,而我知道的是位可变性。从表面上看,使用mutable需要编译器推断对可变成员的任何可能的写入是否会导致相等运算符计算false,这太愚蠢了 Herb Sutter的博客确实证实了逻辑常量至少是可变的意图 类似地,在成员变量上写入可变变量意味着它一直以来的含义:该变量是“可写但逻辑常量” 这仅仅是一种意

选择的答案是mutable的正确用法是表示逻辑常量,而不是按位常量。其他几个问题和答案也提出了同样的观点。我在概念上喜欢这些答案,但它们有什么意义吗

< > C++中没有机制来执行逻辑const,而我知道的是位可变性。从表面上看,使用mutable需要编译器推断对可变成员的任何可能的写入是否会导致相等运算符计算false,这太愚蠢了

Herb Sutter的博客确实证实了逻辑常量至少是可变的意图

类似地,在成员变量上写入可变变量意味着它一直以来的含义:该变量是“可写但逻辑常量”

这仅仅是一种意图吗?标准本身对可变的定义非常简洁,我找不到“逻辑常量”的定义

是否曾经有过这样一种情况,即对违反“逻辑常量”的常量对象的可变成员的写入不仅仅是一种美学上令人不快的设计?

“逻辑常量”不能仅仅通过相等来确定。它还可以包括排序和任何哈希函数(包括其他翻译单元中的自由函数)。对于编译器来说,没有合理的方法来准确地确定是什么导致了逻辑常量,因此它无法确定任何可变成员是否会影响这种常量