![](/img/trans.png)
[英]binary '<' : no operator found for map<std::string, shared_ptr<Foo>>
[英]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 下工作。 我在这里遗漏了一些观点,还是没有完全支持?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.