On Wed, 13 Nov 2013, Michael Matz wrote:
> Hi,
>
> On Wed, 13 Nov 2013, Joseph S. Myers wrote:
>
> > +In GNU C, but not GNU C++, you may also declare the type of a variable
> > +as @code{__auto_type}. In that case, the declaration must declare
> > +only one variable,
>
> What's the reason for this restriction? I can't see what would become
> ambiguous with allowing multiple declarations (even when mixing types):
>
> int i;
> short s;
> __auto_type i2 = i, s2 = s;
>
> (i2 would be int, s2 be short).
__auto_type is thought of as being equivalent to typeof (initializer),
except for avoiding multiple evaluation; there aren't any existing cases
in GNU C where the type specifier is interpreted separately for each
identifier being declared. Obviously you can define semantics (following
C++) for more cases, but the minimal version is sufficient for
<stdatomic.h> and other similar uses in macros, and keeping it minimal
reduces the risk of incompatibility with any future addition of such a
feature to ISO C. (It's also simplest to implement.)
--
Joseph S. Myers
[email protected]