1 inline auto l_auto
= [] (auto) {};
3 inline auto l_tpl
= [] <typename T
> (T
) {};
5 inline auto l_tpl_auto
= [] <typename T
> (T
, auto) {};
7 inline auto l_tpl_nt_ary
= [] <int I
> (int (&)[I
]) {};
9 inline auto l_tpl_nt_auto
= [] <auto I
= 0> () {};
11 template<typename T
, unsigned I
> class U
;
13 template<template<typename
, unsigned> typename
> class TPL
{};
14 inline auto l_tpl_tpl
= [] <template<typename
, unsigned> typename T
> (TPL
<T
> &) {};
16 template<template<template<typename
, unsigned> typename
> typename
> class TPLTPL
{};
17 inline auto l_tpl_tpl_tpl
= []<template<template<typename
, unsigned> typename
> typename T
> (TPLTPL
<T
> &) {};
19 inline auto l_var
= []<typename
... Args
> (Args
...) {};
21 #if FIXME // we fail to parse (&...) correctly
22 inline auto l_var2
= []<int... I
> (int (&...)[I
]) {};
25 template<int...I
> class X
{};
26 inline auto l_var3
= []<template<int...> typename T
, int...I
> (T
<I
...> &a
) {};
28 template<template<typename
, unsigned> typename
...T
> class Y
{};
29 inline auto l_var4
= []<template<typename
, unsigned> typename
... T
> (Y
<T
...> &a
) {};
31 template<int I
> inline void Fn ()
33 auto l
= []<typename T
> (T
) {};
60 auto l1
= []<typename T
, T v
= T(0)> (T a
) {
61 auto l2
= []<typename U
> (T a
, U b
) {};
65 auto l3
= []<typename T
>(U
<T
, 0> *, U
<int, 0> *) {};
69 l3 ((U
<char, 0> *)nullptr, nullptr);