[Bug c++/88313] generic lambda in default template argument
leonid.satanovsky at gmail dot com
gcc-bugzilla@gcc.gnu.org
Mon Jul 29 13:57:56 GMT 2024
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88313
Leonid Satanovsky <leonid.satanovsky at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |leonid.satanovsky at gmail dot com
--- Comment #4 from Leonid Satanovsky <leonid.satanovsky at gmail dot com> ---
Greetings, the bug still exists in latest Gcc (14+):
C++20
---------------------
Works:
#include <iostream>
constexpr auto l = [](auto v) {return v;};
template<class L = decltype(l)>
constexpr auto c(L f = {}) {return f(42);}
int main () {std::cout << c() << std::endl;}
---------------------
Works:
#include <iostream>
constexpr auto c(decltype([](auto v) {return v;}) f = {}) {return f(42);}
int main () { std::cout << c() << std::endl; }
---------------------
(Gcc 14 and latest trunk) Doesn't work / (Clang) Works:
(https://godbolt.org/z/bcbP44bK3)
#include <iostream>
template <class F = decltype([](auto v) {return v;})>
constexpr auto c(F f = {}) {return f(42);}
int main () { std::cout << c() << std::endl; }
More information about the Gcc-bugs
mailing list