If you write it as `auto t = tuple!(typeof(args))(args)` (or `Tuple!(...) too`), you get the same result, but you (should) avoid a potential "converting" constructor when the types miss-match.

Either that, or change the `[Tuple!(typeof(args))]` above to `[typeof(tuple(args))]`. Nah...

BTW: `typeof(args)` is literally the `ParameterTypeTuple!fun` used in the function signature. It might be beter to just `alias Args = ParameterTypeTuple!fun` in the template body, and then just use that:

```D
template memoize(alias fun, uint maxSize = uint.max)
{
    alias Args = ParameterTypeTuple!fun;
    ReturnType!fun memoize(Args args)
    {
        import std.typecons : Tuple, tuple;
        static ReturnType!fun[Tuple!Args] memo;
        auto t = Tuple!Args(args);
        ...
```