[Bug c++/92211] Lamdas in unevaluated context bug
nsajko at gmail dot com
gcc-bugzilla@gcc.gnu.org
Sat Dec 4 19:45:15 GMT 2021
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92211
Neven Sajko <nsajko at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |nsajko at gmail dot com
--- Comment #1 from Neven Sajko <nsajko at gmail dot com> ---
I'm hitting what seems like it may be the same bug on GCC 11.1.0.
Self contained minimal or nearly minimal reproducer below. Works fine with
Clang. GCC reports no error, but the code is miscompiled (returns 3 instead of
11).
Additionally, ubsan reports: "t.cc:15:6: runtime error: execution reached the
end of a value-returning function without returning a value".
Additionally, GCC gives this bogus warning during compilation: "t.cc:15:12:
warning: parameter ‘m’ set but not used [-Wunused-but-set-parameter]".
namespace {
template<typename Func>
auto f(int m) -> long {
int a{2};
return Func{}(a) - m;
}
template<int n>
using Fun = decltype([](int a) -> int {
return a * n;
});
template<int n>
auto g(int m) -> long {
return f<Fun<n>>(m);
}
} // namespace
auto main() -> int {
int m{3};
return g<7>(m);
}
More information about the Gcc-bugs
mailing list