[clang] [clang][dataflow]Use cast_or_null instead cast to prevent crash (PR #68510)

Qizhi Hu via cfe-commits cfe-commits at lists.llvm.org
Tue Oct 10 18:58:40 PDT 2023


================
@@ -180,3 +180,44 @@ void std_forward_rvalue_ref_safe(absl::optional<int>&& opt) {
 
   std::forward<absl::optional<int>>(opt).value();
 }
+
+namespace std {
+
+template<typename T>
+class optional {
+public:
+	template <typename U>
+  optional& operator=(const U &u){
----------------
jcsxky wrote:

Using `absl::optional` would produce a compilation error.

```cpp
clang-tools-extra/test/clang-tidy/checkers/bugprone/Inputs/unchecked-optional-access/absl/types/optional.h:32:7: note: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'int' to 'const optional<float>' for 1st argument
   32 | class optional {
      |       ^~~~~~~~
```

https://github.com/llvm/llvm-project/pull/68510


More information about the cfe-commits mailing list