================ @@ -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 cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits