xem xét ví dụ sau đây, chúng tôi phân tích dữ liệu và thông qua kết quả với chức năng tiếp theo:Làm thế nào để chuyển từ std :: tùy chọn <T>
Content Parse(const std::string& data);
void Process(Content content);
int main()
{
auto data = ReadData();
Process(Parse(data));
}
Bây giờ chúng ta hãy thay đổi mã sử dụng std::optional
để xử lý một bước phân tích thất bại:
optional<Content> Parse(const std::string& data);
void Process(Content content);
int main()
{
auto data = ReadData();
auto content = Parse(data);
if (content)
Process(move(*content));
}
Có hợp lệ để di chuyển từ optional<T>::value()
không? Nếu nó là ok cho std::optional
nó có hợp lệ cho boost::optional
không?
Tôi nghĩ điều này sẽ ổn. Giá trị được chứa phải ở trạng thái hợp lệ nhưng không xác định sau khi di chuyển từ giá trị đó. –