This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 113d. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.

2024-04-05


1201. Are deleted and defaulted functions definitions?

Section: 6.2  [basic.def]     Status: C++11     Submitter: Daniel Krügler     Date: 2010-09-20

[Voted into the WP at the March, 2011 meeting.]

According to 6.3 [basic.def.odr] paragraph 2,

A declaration is a definition unless it declares a function without specifying the function's body (9.5 [dcl.fct.def]), it contains the extern specifier (9.2.2 [dcl.stc]) or a linkage-specification25 (9.11 [dcl.link]) and neither an initializer nor a function-body...

Because = delete and = default are not forms of function-body, this description does not cover defaulted and deleted functions, even though these declarations are elsewhere referred to as being definitions.

Proposed resolution (January, 2011):

Change the grammar in 9.5.1 [dcl.fct.def.general] paragraph 1 as follows: