Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 涉及constexpr实例的相等性检查_C++_Equality_Constexpr - Fatal编程技术网

C++ 涉及constexpr实例的相等性检查

C++ 涉及constexpr实例的相等性检查,c++,equality,constexpr,C++,Equality,Constexpr,我在班上添加了以下成员: constexpr static folly::Unit nullUnit {}; 以下是folly::Unit的链接: 根据标志,我将返回folly::unit或nullUnit: if (mutate_resp->processed()) { LOG(INFO) << "check returns folly::unit";

我在班上添加了以下成员:

constexpr static folly::Unit nullUnit {};
以下是folly::Unit的链接:

根据标志,我将返回folly::unit或nullUnit:

                  if (mutate_resp->processed()) {
                      LOG(INFO) << "check returns folly::unit";
                      return folly::unit;
                  }
                  LOG(INFO) << "check returns nullUnit";
                  return nullUnit;
然而,尽管我在输出中看到了以下内容,但这种比较似乎总是正确的:

I0608 22:43:37.729920 18225 raw-async-table.cc:132] check returns folly::unit
I0608 22:43:37.731446 18225 raw-async-table.cc:135] check returns nullUnit
任何暗示都是值得赞赏的

愚蠢有以下几点:

constexpr Unit unit {};
bool operator==(const Unit& /*other*/) const { return true; }
你有这个:

constexpr static folly::Unit nullUnit {};
这些都是一样的,这是有道理的。此外,愚蠢还包括:

constexpr Unit unit {};
bool operator==(const Unit& /*other*/) const { return true; }

因此,很明显,任何单位都将与任何其他单位进行比较。

您的
=
运算符始终返回true。为什么你会认为它是假的呢?这个
单元
类型或多或少是一个可以实例化的
无效
。因此,实例表示没有值,并且定义所有
Unit
对象彼此相等。您似乎认为
Unit
是一种“符号”类型,这与链接文件中的注释完全不同。在阅读了Unit.h之后,我得到了相同的理解:-)