考虑以下代码(为简单起见断章取义):
std::unique_ptr<std::istream> stream;
stream = std::make_unique<std::ifstream>(path, std::ios::in | std::ios::binary);
此代码在 MSVC 上编译得很好并且没有问题,但是 Clang 发出错误:
error: no viable overloaded '='
stream = std::make_unique<std::ifstream>(path, std::ios::in | std::ios::binary);
除了上面的错误,日志还声称 'unique_ptr<std::basic_ifstream<char>, default_delete<std::basic_ifstream<char>>>'
不能转换为 'unique_ptr<std::istream, default_delete<std::istream>>'
.
我不能使用引用,因为我需要在当前范围之外保持 stream
活动,所以指针似乎是唯一的解决方案。我该如何解决这个问题?