[libcxx-commits] [libcxx] [libc++] Correct `optional<T&>` implementation (PR #174537)
via libcxx-commits
libcxx-commits at lists.llvm.org
Mon Jan 5 22:52:24 PST 2026
github-actions[bot] wrote:
<!--LLVM CODE FORMAT COMMENT: {clang-format}-->
:warning: C/C++ code formatter, clang-format found issues in your code. :warning:
<details>
<summary>
You can test this locally with the following command:
</summary>
``````````bash
git-clang-format --diff origin/main HEAD --extensions cpp,,h -- libcxx/test/std/utilities/optional/optional.object/optional.object.assign/emplace.compile.fail.cpp libcxx/include/optional libcxx/test/libcxx/utilities/optional/optional.object/optional.object.observe/value_or.compile.pass.cpp libcxx/test/std/utilities/optional/optional.monadic/and_then.pass.cpp libcxx/test/std/utilities/optional/optional.monadic/or_else.pass.cpp libcxx/test/std/utilities/optional/optional.monadic/transform.pass.cpp libcxx/test/std/utilities/optional/optional.object/optional.object.assign/assign_value.pass.cpp libcxx/test/std/utilities/optional/optional.object/optional.object.assign/emplace.pass.cpp libcxx/test/std/utilities/optional/optional.object/optional.object.assign/nullopt_t.pass.cpp libcxx/test/std/utilities/optional/optional.object/optional.object.ctor/U.pass.cpp libcxx/test/std/utilities/optional/optional.object/optional.object.ctor/const_optional_U.pass.cpp libcxx/test/std/utilities/optional/optional.object/optional.object.ctor/in_place_t.pass.cpp libcxx/test/std/utilities/optional/optional.object/optional.object.ctor/move.pass.cpp libcxx/test/std/utilities/optional/optional.object/optional.object.ctor/optional_U.pass.cpp libcxx/test/std/utilities/optional/optional.object/optional.object.ctor/ref_constructs_from_temporary.verify.cpp libcxx/test/std/utilities/optional/optional.object/optional.object.mod/reset.pass.cpp libcxx/test/std/utilities/optional/optional.object/optional.object.observe/bool.pass.cpp libcxx/test/std/utilities/optional/optional.object/optional.object.observe/dereference.pass.cpp libcxx/test/std/utilities/optional/optional.object/optional.object.observe/dereference_const.pass.cpp libcxx/test/std/utilities/optional/optional.object/optional.object.observe/dereference_const_rvalue.pass.cpp libcxx/test/std/utilities/optional/optional.object/optional.object.observe/dereference_rvalue.pass.cpp libcxx/test/std/utilities/optional/optional.object/optional.object.observe/has_value.pass.cpp libcxx/test/std/utilities/optional/optional.object/optional.object.observe/op_arrow.pass.cpp libcxx/test/std/utilities/optional/optional.object/optional.object.observe/op_arrow_const.pass.cpp libcxx/test/std/utilities/optional/optional.object/optional.object.observe/value_const.pass.cpp libcxx/test/std/utilities/optional/optional.object/optional.object.observe/value_const_rvalue.pass.cpp libcxx/test/std/utilities/optional/optional.object/optional.object.observe/value_or.pass.cpp libcxx/test/support/copy_move_types.h --diff_from_common_commit
``````````
:warning:
The reproduction instructions above might return results for more than one PR
in a stack if you are using a stacked PR workflow. You can limit the results by
changing `origin/main` to the base branch/commit you want to compare against.
:warning:
</details>
<details>
<summary>
View the diff from clang-format here.
</summary>
``````````diff
diff --git a/libcxx/include/optional b/libcxx/include/optional
index 487cfa1e7..710066c5b 100644
--- a/libcxx/include/optional
+++ b/libcxx/include/optional
@@ -1185,7 +1185,7 @@ public:
[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr _Tp&& value() &&
# if _LIBCPP_STD_VER >= 26
- requires(!is_lvalue_reference_v<_Tp>)
+ requires(!is_lvalue_reference_v<_Tp>)
# endif
{
if (!this->has_value())
@@ -1193,9 +1193,9 @@ public:
return std::move(this->__get());
}
- [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr _Tp const&& value() const&&
+ [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr _Tp const&& value() const&&
# if _LIBCPP_STD_VER >= 26
- requires(!is_lvalue_reference_v<_Tp>)
+ requires(!is_lvalue_reference_v<_Tp>)
# endif
{
if (!this->has_value())
diff --git a/libcxx/test/std/utilities/optional/optional.object/optional.object.observe/dereference_const.pass.cpp b/libcxx/test/std/utilities/optional/optional.object/optional.object.observe/dereference_const.pass.cpp
index ff6912603..e0a83b574 100644
--- a/libcxx/test/std/utilities/optional/optional.object/optional.object.observe/dereference_const.pass.cpp
+++ b/libcxx/test/std/utilities/optional/optional.object/optional.object.observe/dereference_const.pass.cpp
@@ -78,15 +78,15 @@ int main(int, char**) {
constexpr optional<X> opt(X{});
static_assert((*opt).test() == 3, "");
}
- {
- constexpr optional<Y> opt(Y{});
- assert((*opt).test() == 2);
- }
+ {
+ constexpr optional<Y> opt(Y{});
+ assert((*opt).test() == 2);
+ }
#if TEST_STD_VER >= 26
- assert(test_ref());
- static_assert(test_ref());
+ assert(test_ref());
+ static_assert(test_ref());
#endif
- return 0;
+ return 0;
}
``````````
</details>
https://github.com/llvm/llvm-project/pull/174537
More information about the libcxx-commits
mailing list