![]() |
1
5
除非另有说明,以下所有标准参考文件均指 N4861 (March 2020 post-Prague working draft/C++20 DIS) . 这是一个叮当作响的错误,GCC根据 [dcl.decl]/4 (以及 [temp.constr.decl]/1 ) [ 强调 我的]:
同一段还包含一个(非规范性)示例,明确指出OP的示例格式不正确:
我们可能会注意到,在(将成为C++20)工作草案的早期版本中, N4810 ,[dcl.decl]/4对何处允许出现要求条款的要求较弱:
其中OP用例的非规范性示例被明确显示为格式良好。其初衷可以说是允许基于类模板的模板参数约束类模板的非模板成员函数:
在N4861中[dcl.decl]/4的最终状态(适用于C++20)中,这仍然是允许的,其中限制为 模板函数 (见 模板实体 在里面 [temp.pre]/8 尤其 [temp.pre]/8.3 ),不仅包括函数模板(以及非模板和模板类模板的函数模板成员),还包括类模板的非模板成员函数。 叮当虫报告: |
![]() |
WL_Law · C++要求模板变量数小于N,但失败 1 年前 |
![]() |
rbv · 如何使用std::string成员的默认太空船运算符 2 年前 |
![]() |
iBug · 三向比较运算符与减法有何不同? 7 年前 |
![]() |
Mathieu Van Nevel · C++概念循环 7 年前 |
![]() |
sukovanej · C++标准库将来会包含网络、字符串算法等吗? 7 年前 |