我的问题可以用以下代码总结:
#include <variant>
int main()
{
using V = std::variant<int, std::nullptr_t>;
V a = 0;
V b = nullptr;
a < b;
}
我想要一个包含
std::nullptr_t
的变量,并且我希望能够比较这样的变量。它在Visual Studio 2018(版本16.1.X)上可行,但在版本16.3.1上无法编译。我认为这是编译器中的错误,但现在我不确定了。我找不到任何关于std::nullptr_t
支持比较运算符的信息,即使GCC和Clang似乎也不能达成一致。它是否应该工作?如果否,则有没有办法使其工作?定义std::nullptr_t
运算符似乎无效。inline bool operator<(std::nullptr_t, std::nullptr_t)
{
return false;
}
由于定义关系运算符只能在类参数中进行。
谢谢。
nullptr != nullptr
吗?那不是很糟糕吗? - François Andrieuxoperator<
,但定义了operator==
,这是打字错误吗? - 463035818_is_not_a_numberstd::variant
中使用std::nullptr_t
的用例是什么? - Acorn