Skip to content

cdecl-17.0

Compare
Choose a tag to compare
@paul-j-lucas paul-j-lucas released this 13 Jun 15:54
· 1006 commits to master since this release

Abbreviated function template parameter packs
Functions with auto parameters (abbreviated function templates) like:

int f( auto x )

have been supported since cdecl 9.6; this release adds additional support for parameter packs like:

int f( auto ...x )

Added help option suggestions
Added suggestions to error messages for the help options commands, english, and options, for example:

cdecl> help eglish
            ^
6: "eglish": no such command or option; did you mean "english"?

Constrained auto
For abbreviated function templates, constrained auto declarations are now supported:

c++decl> explain C auto x
declare x as concept C
c++decl> explain C auto ...x
declare x as concept C parameter pack

auto parameters in typedefs
Use of auto in typedef function-like parameters is now correctly reported as an error:

c++decl> typedef int F(auto)
                       ^
15: error: "auto" illegal in type definition

decltype declarations
Now recognizing decltype just to say it's not supported.

Glob help
The help text now defines "glob."

GNU --version
Now printing cdecl copyright year, author, license, free software statement, and no warranty statement to conform to the GNU Coding Standards; see https://www.gnu.org/prep/standards/html_node/_002d_002dversion.html.

Structured binding declarations
Structured binding declarations are now supported except that you don't assign them from anything (no = expression):

c++decl> explain auto [x, y]
declare x, y as structured binding
c++decl> explain auto&& [x, y]
declare x, y as rvalue reference to structured binding

Fixed operator declaration core dump
An invalid scoped operator name containing a keyword like:

c++decl> explain bool int::operator!()

would dump core; fixed.

Fixed --west-decl=t for pointer to const pointer
Given:

c++decl --west-decl=t 'declare p as pointer to const pointer to int'

you'd incorrectly get:

int *const *p;

You now correctly get:

int* const* p;