Closed tboyce021 closed 6 years ago
I can also get rid of the warning by adding noexcept(noexcept(__VA_ARGS__))
to DECLTYPE_AUTO_RETURN
used by value_visitor::operator()
and just noexcept
to visitation::base::at
.
That seems to work for me. Throwing from my lambda without noexcept
on it propagates the exception while throwing with noexcept
on the lambda calls terminate like I would expect. But I'm not sure if that's sufficient so someone else will need to look into this. Hopefully my investigation helps though :smiley: .
Alright, upon further investigation, I appear to only be getting this with gcc 5.4.1 and 6.3.0. It seems 7.2.0 doesn't generate this warning.
Thanks for the report! I'll try to get around to looking at this before the weekend.
Fixed by: bc5d147d59e9132b54837cb226321ebb08c2e9b9 , 2d4503d88f97d880e2817095b27dc3e66646b577, 7d9454be276ad69e407db6e51aab98c995a8cc00, f6638fd18ca6badb421efdbb5442f140d1f76f66
I'm getting a
noexcept
warning when using this with gcc. I've tried gcc 5.4.1, 6.3.0, and 7.2.0 all on Ubuntu 16.04 and get this warning on all of them. I'm using the 1.3.0 single header and compiling with the-std=c++11
flag.This is the shortest example that I get the warning with:
It seems to be caused by using a visitor that doesn't throw an exception. Simply adding
throw;
to the lambda body and removingnoexcept
makes the warning go away, i.e. the following doesn't generate a warning:I've done a little bit of digging and can get rid of the warning by messing with
If I change
noexcept(noexcept(__VA_ARGS__))
to virtually anything else,noexcept(true)
,noexcept(false)
,noexcept
, or just remove it entirely, I no longer get the warning. I've gotten to the point where I'm not sure if this is a bug in the library, a compiler bug, or just me not understandingnoexcept
.Here is the compiler output: