Doesn’t constraining the “auto” in C++ defeat the purpose of it?

A constraint on the deduced auto type doesn’t mean it needs to be a specific type, it means it needs to be one of a set of types that satisfy the constraint. Note that a constraint and a type are not the same thing, and they’re not interchangeable.

e.g. a concept like std::integral constrains the deduced type to be an integral type, such as int or long, but not float, or std::string.

If I really need a std::integral datatype, couldn’t I just omit the auto completely?

In principle, I suppose you could, but this would at the minimum lead to parsing difficulties. e.g. in a declaration like

foo f = // ...

is foo a type, or a constraint on the type?

Whereas in the current syntax, we have

foo auto f = // ...

and there’s no doubt that foo is a constraint on the type of f.

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)