@@ -25,7 +25,7 @@ _STL_DISABLE_CLANG_WARNINGS
2525_STD_BEGIN
2626
2727_EXPORT_STD template <class _Err>
28- class unexpected;
28+ class _NODISCARD unexpected;
2929
3030template <class _Err>
3131struct _Check_unexpected_argument : true_type {
@@ -39,7 +39,7 @@ struct _Check_unexpected_argument : true_type {
3939
4040// [expected.un.general]
4141_EXPORT_STD template <class _Err>
42- class unexpected {
42+ class _NODISCARD unexpected {
4343 static_assert(_Check_unexpected_argument<_Err>::value);
4444
4545 template <class _Ty, class _Err2>
@@ -107,10 +107,10 @@ template <class _Err>
107107unexpected(_Err) -> unexpected<_Err>;
108108
109109_EXPORT_STD template <class _Err>
110- class bad_expected_access;
110+ class _NODISCARD bad_expected_access;
111111
112112template <>
113- class bad_expected_access<void> : public exception {
113+ class _NODISCARD bad_expected_access<void> : public exception {
114114public:
115115 _NODISCARD const char* __CLR_OR_THIS_CALL what() const noexcept override {
116116 return "Bad expected access";
@@ -131,7 +131,7 @@ protected:
131131};
132132
133133_EXPORT_STD template <class _Err>
134- class bad_expected_access : public bad_expected_access<void> {
134+ class _NODISCARD bad_expected_access : public bad_expected_access<void> {
135135public:
136136 explicit bad_expected_access(_Err _Unex) noexcept(is_nothrow_move_constructible_v<_Err>) // strengthened
137137 : _Unexpected(_STD move(_Unex)) {}
@@ -205,7 +205,7 @@ concept _Trivially_move_constructible_assignable_destructible =
205205 && is_trivially_destructible_v<_Type>;
206206
207207_EXPORT_STD template <class _Ty, class _Err>
208- class expected {
208+ class _NODISCARD expected {
209209private:
210210 static_assert(_Check_expected_argument<_Ty>::value);
211211 static_assert(_Check_unexpected_argument<_Err>::value);
@@ -1210,7 +1210,7 @@ concept _Expected_unary_move_assignable = is_move_assignable_v<_Err> && is_move_
12101210
12111211template <class _Ty, class _Err>
12121212 requires is_void_v<_Ty>
1213- class expected<_Ty, _Err> {
1213+ class _NODISCARD expected<_Ty, _Err> {
12141214private:
12151215 static_assert(_Check_unexpected_argument<_Err>::value);
12161216
0 commit comments