devel/cdecl: update to 8.0.


devel/cdecl: update to 8.0.

C2X support
Added support for C2X:

Added type char8_t.
Added ... syntax for attributes.
Added deprecated, maybe_unused, and nodiscard attributes.
Removed support for typeless function arguments in K&R C.
More C++20 support
Added support for constinit and export in C++20.

Embedded C support
Added support for Embedded C:

Added types _Accum and _Fract (and accum and fract).
Added modifier _Sat (and sat and saturated).
Added the typedefs int_hk_t, int_hr_t, int_k_t, int_lk_t, int_lr_t, int_r_t, uint_uhk_t, uint_uhr_t, uint_uk_t, uint_ulk_t, uint_ulr_t, and uint_your_t.
Since the Embedded C standard is based on C99, support for Embedded C is available only when the language is set to C99.

Forbidding attribute syntax
The xxx attribute syntax is now forbidden until either C2X or C++11.

class, struct, & union optional ;
Semicolons are now optional after class, struct, or union declarations.

class, struct, & union define themselves
Before now:

class C { typedef int Int; }
would define only C::Int as a type. Now, the enclosing class, struct, or union is also defined as a type. Hence, the above is now equivalent to:

define C as class C
define C::Int as int
This also means that either:

class C { }
class C
is eqivalent to:

define C as class C
class, struct, & union commands
class, struct, and union are now commands (just like namespace).

Per-scope types; fixed English scope name order
Each scope of a scoped name (sname) now has its own type. Additionally, the English printed order is now (correctly) inner-to-outermost. For example:

c++decl> namespace N { class C { typedef int I; }; }
c++decl> explain N::C::I x
declare x as I of class C of namespace N
Floating-point extensions for C types
Added types _Decimal32_t, _Decimal64_t, _Decimal64x, _Decimal128x, _Float32, _Float32x, _Float64, _Float128, _Float128x, femode_t, and long_double_t.

Aligned to
Now allowing to in addition to as for ... aligned [as|to] ....

show as
Now allowing an optional as in show ... [as] typedef.

Added the asm keyword to prevent declarations from using it.


lerAuthored on
rP543831: - Fix build compatibility issue