为什么 C++ Concepts TS 中同时包含变量和函数概念?
Why have both variable and function concepts in C++ Concepts TS?
我一直在查看在 GCC 6 中实现的 C++1z N4377 Concepts TS 草案,但我不明白拥有两种不同概念的目的:变量概念和功能概念。
函数概念草案的相关部分是[dcl.spec.concept (5.4)]
- 声明应具有等效于
{ return E; }
的函数体,其中 E
是 constraint-expression (14.10.1.3).
对于可变概念,在下一段 [(6.3)] :
- 初始化程序应为约束表达式。
他们中有没有一个可以做而另一个不能做的事情?如果不是,是否有将两者都包括在内的理由?
注意:最新草案P0121R0在这方面没有任何改变
函数概念可以在不同的模板参数数量上重载。变量概念没有提供函数概念没有的东西,除了在某些上下文中不放置 ()
的能力。
从 TS 中删除变量概念不会降低概念的表达能力。
我一直在查看在 GCC 6 中实现的 C++1z N4377 Concepts TS 草案,但我不明白拥有两种不同概念的目的:变量概念和功能概念。
函数概念草案的相关部分是[dcl.spec.concept (5.4)]
- 声明应具有等效于
{ return E; }
的函数体,其中E
是 constraint-expression (14.10.1.3).
对于可变概念,在下一段 [(6.3)] :
- 初始化程序应为约束表达式。
他们中有没有一个可以做而另一个不能做的事情?如果不是,是否有将两者都包括在内的理由?
注意:最新草案P0121R0在这方面没有任何改变
函数概念可以在不同的模板参数数量上重载。变量概念没有提供函数概念没有的东西,除了在某些上下文中不放置 ()
的能力。
从 TS 中删除变量概念不会降低概念的表达能力。