top | item 46815955

(no title)

cpburns2009 | 1 month ago

Now I haven't touched C++ in probably 15 years but the definition of main() looks confused:

> auto main() -> int

Isn't that declaring the return type twice, once as auto and the other as int?

discuss

order

yunnpp|1 month ago

No. The auto there is doing some lifting so that you can declare the type afterwards. The return type is only defined once.

There is, however, a return type auto-deduction in recent standards iirc, which is especially useful for lambdas.

https://en.cppreference.com/w/cpp/language/auto.html

auto f() -> int; // OK: f returns int

auto g() { return 0.0; } // OK since C++14: g returns double

auto h(); // OK since C++14: h’s return type will be deduced when it is defined

maccard|1 month ago

What about

auto g() -> auto { return 0.0; }

maccard|1 month ago

I really wish they had used func instead, it would have saved this confusion and allowed for “auto type deduction” to be a smaller more self contained feature

zabzonk|1 month ago

the standard c++ committee is extremely resistant to introducing new keywords such as "func", so as not to break reams of existing code.