Thread overview
Allow auto in function parameters with default arguments?
Sep 10, 2012
Andrej Mitrovic
Sep 10, 2012
Timon Gehr
Sep 10, 2012
Andrej Mitrovic
Sep 11, 2012
Mehrdad
Sep 11, 2012
Artur Skawina
September 10, 2012
It occurred to me that using a parameter with a default value that is a function call could benefit from using auto:

struct Foo(T) { }

auto getFoo()
{
    return Foo!int();
}

void func(int x, auto foo = getFoo()) { }

Granted this is a simple case and might be overkill, but if the function returns some complicated range type (or worse, a Voldemort type) it might be hard or impossible to specify the type.
September 10, 2012
On 09/10/2012 06:20 AM, Andrej Mitrovic wrote:
> It occurred to me that using a parameter with a default value that is
> a function call could benefit from using auto:
>
> struct Foo(T) { }
>
> auto getFoo()
> {
>      return Foo!int();
> }
>
> void func(int x, auto foo = getFoo()) { }
>
> Granted this is a simple case and might be overkill,

As parameter names are optional, foo is parsed as the parameter type in
this case. What exact change do you propose?

> but if the function returns some complicated range type (or worse, a Voldemort
> type) it might be hard or impossible to specify the type.
>

Every type that you can get hold of a value of can be specified by the means of typeof.
September 10, 2012
On 9/10/12, Timon Gehr <timon.gehr@gmx.ch> wrote:
> Every type that you can get hold of a value of can be specified by the means of typeof.

Yeah but it's repetitive. typeof(exp) arg = exp;
September 11, 2012
http://forum.dlang.org/thread/is9jmn$2ia5$1@digitalmars.com
September 11, 2012
On 09/11/12 08:21, Mehrdad wrote:
> http://forum.dlang.org/thread/is9jmn$2ia5$1@digitalmars.com

Completely different issue. That one is about syntax sugar for template functions, while this one would just save the programmer some typing when declaring "normal" functions (by propagating the type of the default argument expression, which would make it possible to skip the redundant 'typeof(expr)' part).

artur