MSVC 的标准库没有为std::string、std::shared_ptr 等定义飞船运算符?
MSVC's standard library does not define spaceship operator for std::string, std::shared_ptr, and so?
我正在努力使我的程序成为多平台的,最初是为 Linux 编写的。 MSVC(我使用的是 19.28)被告知从 19.20 版(https://en.cppreference.com/w/cpp/compiler_support/20)开始支持宇宙飞船运算符,但它似乎没有为 std::string 或 std::shared_ptr 定义此运算符(可能对许多其他生物)。
我真正想做的是:
// int x(1), y(2); // ok!
// std::string x("1"), y("2"); // nope
std::shared_ptr<int> x(new int), y(new int); // nope
auto r = x <=> y; // error C2676 for string and shared_ptr
实例:
https://godbolt.org/z/Eo49hh
它在 GCC 10.2 下工作。我是否遗漏了一些要点,或者它没有得到真正的完全支持?
我正在努力使我的程序成为多平台的,最初是为 Linux 编写的。 MSVC(我使用的是 19.28)被告知从 19.20 版(https://en.cppreference.com/w/cpp/compiler_support/20)开始支持宇宙飞船运算符,但它似乎没有为 std::string 或 std::shared_ptr 定义此运算符(可能对许多其他生物)。
我真正想做的是:
// int x(1), y(2); // ok!
// std::string x("1"), y("2"); // nope
std::shared_ptr<int> x(new int), y(new int); // nope
auto r = x <=> y; // error C2676 for string and shared_ptr
实例: https://godbolt.org/z/Eo49hh
它在 GCC 10.2 下工作。我是否遗漏了一些要点,或者它没有得到真正的完全支持?