================
@@ -355,4 +356,38 @@ void nonInlineFunctionCallPtr() {
char c = std::get<char> (v); // no-warning
(void)a;
(void)c;
-}
\ No newline at end of file
+}
+
+//----------------------------------------------------------------------------//
+// std::swap for std::variant
+//----------------------------------------------------------------------------//
+
+void swapForVariants() {
+ std::variant<int, char> a = 5;
+ std::variant<int, char> b = 'C';
+ std::swap(a, b);
+ int a1 = std::get<int>(b);
+ char c = std::get<int>(a); // expected-warning {{std::variant 'a' held a
'char', not an 'int'}}
+ (void)a1;
+ (void)c;
+}
+
+//----------------------------------------------------------------------------//
+// std::swap for std::variant
+//----------------------------------------------------------------------------//
+
+void stdEmplace() {
+ std::variant<int, char> v = 'c';
+ v.emplace<int> (5);
+ int a = std::get<int> (v); // no-warning
+ char c = std::get<char> (v); // no-warning
+ (void)a;
+ (void)c;
+}
+
+void followHeldValue() {
----------------
NagyDonat wrote:
It's good that this case highlights that the value is _not yet_ followed by
this checker; but consider adding a TODO or similar commit to highlight that
this is a limitation of the checker and eventually it could / will be modeled.
(Or, if you believe that the value shouldn't be tracked, then explain that.)
https://github.com/llvm/llvm-project/pull/87886
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits