Quuxplusone added a comment.
> The warning is fundamentally about dataflow, but this doesn't apply to
> unevaluated expressions. There are plenty of cases where a user might want to
> ask if assignment is well formed on noexcept using only one variable. For
> example:
>
> template <class T> void foo(T& value) noexcept(noexcept(value = value)) {
> /* perform an assignment somewhere */ }
My impression is that this case will not trigger the warning because the
variable `value` is dependently typed.
I agree there should be a regression test for this exact case just to make sure
of that.
@EricWF, is it important IYO that this warning not trigger in unevaluated
contexts even for non-dependently-typed variables?
This is the case that seems to be coming up in practice in libc++ tests, but is
hard to reason about because it's "only" deliberately contrived test code.
auto foo(std::exception& value)
noexcept(noexcept(value = value)) // ok to diagnose?
-> decltype(value = value) // ok to diagnose?
{
static_assert(noexcept(value = value)); // ok to diagnose?
}
Repository:
rC Clang
https://reviews.llvm.org/D44883
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits