https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120917
--- Comment #23 from Jason Merrill <jason at gcc dot gnu.org> --- (In reply to Frank Heckenbach from comment #21) > So my question stands. Then yes, it does look like it should work; libstdc++ uses that 'requires function call' pattern in template<typename _Tp> concept __is_derived_from_optional = requires (const _Tp& __t) { []<typename _Up>(const optional<_Up>&){ }(__t); };