#include
#include
#include
#include
#include
#include
using namespace std::literals;
class Resource {
Resource() { /* some setup, might raise */ }
public:
static std::expected tryCreate() noexcept {
try {
return Resource();
} catch (const std::runtime_error& exc) {
return std::unexpected(exc.what());
}
}
static const Resource create() noexcept {
while (true) {
const auto resource{Resource::tryCreate()};
if (resource.has_value()) return resource.value(); //
Я не вижу никаких объяснений о CPPREEFEREFERE, что типы перемещения не допускаются, и я не сразу не могу найти кого-то еще, что у него есть подобная проблема при поиске в Интернете, (Хотя я все еще новичок в этом, так что, вероятно, мой C ++ Google-Fu неадекватен). Я думаю, что это может быть что-то связано с "копией Elision", но на самом деле я весьма потерян. Код>? Если это так, как я могу изменить свой пример кода так, чтобы он работал (без определения конструкторов копирования)? m переживает аналогичные с GCC 14.2.1, опять же с -std = c ++ 23.
Подробнее здесь: [url]https://stackoverflow.com/questions/79386407/how-can-i-use-value-on-stdexpectedt-e-where-t-is-a-move-only-type[/url]
Следующий код: < /p> [code]#include #include #include #include #include #include
using namespace std::literals;
class Resource {
Resource() { /* some setup, might raise */ }
public: static std::expected tryCreate() noexcept { try { return Resource(); } catch (const std::runtime_error& exc) { return std::unexpected(exc.what()); } } static const Resource create() noexcept { while (true) { const auto resource{Resource::tryCreate()}; if (resource.has_value()) return resource.value(); // Я не вижу никаких объяснений о CPPREEFEREFERE, что типы перемещения не допускаются, и я не сразу не могу найти кого-то еще, что у него есть подобная проблема при поиске в Интернете, (Хотя я все еще новичок в этом, так что, вероятно, мой C ++ Google-Fu неадекватен). Я думаю, что это может быть что-то связано с "копией Elision", но на самом деле я весьма потерян. Код>? Если это так, как я могу изменить свой пример кода так, чтобы он работал (без определения конструкторов копирования)? m переживает аналогичные с GCC 14.2.1, опять же с -std = c ++ 23.