我不理解DR 2145中为[dcl.fct.def.general] / 2提出的更改

时间:2018-06-27 20:49:51

标签: c++ language-lawyer

DR 2145中提出的更改是[dcl.fct.def.general]/2从C ++ 14到C ++ 17的更改,其原因如下:

C ++ 14:

  

函数定义中的声明符的格式应为
  D1(参数声明子句)    cv-qualifier-seq opt ref-qualifier opt
  例外规范 opt    attribute-specifier-seq opt   回退类型 opt
  如8.3.5中所述。功能   只能在名称空间或类范围内定义。

C ++ 17:

  

在函数定义中,void 声明符 ;声明符 ;   必须是11.3.5中描述的格式正确的函数声明。一种   函数只能在名称空间或类范围内定义。

坦率地说,我不了解更改的动机,也不了解C ++ 17中的新措辞。

1 个答案:

答案 0 :(得分:2)

作为T.C.在comment中指出,

  

目的是允许int (f()) { return 1; }之类的东西被以前的措词禁止,但实际上是允许的。