Skip to content

CWG3179 [dcl.fct] p3 void parameter function and SFINAE #889

Description

@mizvekov

Full name of submitter: Matheus Izvekov

Reference (section label): [dcl.fct]p3

Issue description:

[dcl.fct]p3 sentence 4 says:

A parameter list consisting of a single unnamed non-object parameter of non-dependent type void is equivalent to an empty parameter list.

Consider this example:

template<class T> void foo(std::void_t<T*>) {};
template void foo<int&>();

Here the function template foo declares a single unnamed non-object parameter of non-dependent type void.

Is this supposed to result in a substitution failure?

Suggested resolution:

Reject the function template declaration as invalid.

Change [dcl.fct] p3 sentence 4:

A parameter list consisting of a single unnamed non-object parameter of non-dependent type equivalent to ([temp.over.link]) void is equivalent to an empty parameter list.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions