|
1
4
打高尔夫!这是较短的:
具有预期的行为(
https://wandbox.org/permlink/iZpUZRC5s73co0bV
)和
|
|
2
5
通过重用,您已经可以拥有更短的代码
不确定你能不能穿短一点。 |
|
|
3
3
我不知道更好的方法来写你的概念
(作为一个旁白,可用的实验G+支持概念是基于比C++ 20接受的更老的建议。所以尽管当前的g++-fconcepts需要
这也带来了另一个改进。假设而不是一个函数模板
如果你试图通过
使用较旧的非约束函数模板,C++定义了一个“更专业化”的关系,它可以确定许多“函数模板”的情况。
如这个例子所示,有时满足一个概念或约束在逻辑上意味着满足另一个概念或约束,如果这意味着C++可以使用这个事实来定义函数模板重载(和类模板部分专门化)的“更专业化”,那就太好了。但是模板约束是比参数类型更复杂的事情,并且从它们中确定逻辑含义通常要困难得多。 所以C++只定义了一些相当简单的规则,用于在满足两个模板的所有约束的情况下比较约束。在不了解确切技术细节的情况下,需要记住的主要内容是:
如果使用这些简化的规则,就有可能显示(例如,使用真值表)满足约束
所以在比较
当比较您的
因此,虽然概念和约束当然是对语言有用的有用的补充,但我认为,尽可能强地获得概念之间的包容关系,会使概念之间的差异能够很好地满足特定目的和真正好的通用库级概念。做后者将是棘手的(并且绝对需要一套共同的许多基本的标准概念),并且我期望C++社区需要学习一些“最佳实践”规则,关于如何在我们一起做这件事。 |
|
|
4
2
好的,样板做好了。
|