Do C++14 generic lambdas bring a real improvement to the language or they are a kind of syntactic sugar? Whether there are some situations where

```
[](auto param1, auto param2, /* ... */ auto paramN)
{
    return /* ... */;
}

```

cannot be replaced with

```
template <typename Type1, typename Type2, /* ... */ typename TypeN>
auto foo(Type1&& param1, Type2&& param2, /* ... */ TypeN&& paramN)
{
    return  /* ... */;
}

```

or

```
struct bar
{
    template <typename Type1, typename Type2, /* ... */ typename TypeN>
    auto operator()(Type1&& param1, Type2&& param2, /* ... */ TypeN&& paramN)
    {
        return  /* ... */;
    }
};

```

?

---

[**@Kerrek SB**](https://stackoverflow.com/users/596781/kerrek-sb) provided very interesting links [in the comments](https://stackoverflow.com/questions/25382363/generic-lambdas-syntactic-sugar-or-not/25382479?noredirect=1#comment39583593_25382363) which illustrate the power of generic lambdas:

* [Boost.Hana](http://ldionne.github.io/hana/): Heterogeneous combinators for expressive metaprogramming ([github](https://github.com/ldionne/hana))
* [Tuple-creation idiom](https://stackoverflow.com/questions/25338795/is-there-a-name-for-this-tuple-creation-idiom)