c++ - 命名空间可以(是一个/满足一个)概念吗?

标签 c++ namespaces static-members c++-concepts c++20

我知道 C++ 概念提案的目的可能是对模板参数(例如,作为“序列”)施加限制,以应对当前情况,即任何设法编译的都足够好(并且错误消息很糟糕)。

但是——命名空间呢?我的意思是,目前,我们不能将它们用作模板参数,但有人会认为,如果一个方法只使用类的静态方法和成员,那么传递给它的命名空间也应该是一件令人满意的事情。 Concepts 提案的当前版本/当前实现是否支持它?如果没有,是考虑并拒绝还是不考虑?

相关问题:

Is a class with only static methods better than a namespace with only non-member functions?

最佳答案

Concepts 没有添加在编译或运行时传递命名空间的机制。因此,没有办法针对概念测试命名空间,或者使用命名空间对代码进行参数化,禁止宏。

反射 TS 可能允许对 namespace 进行反射(我不是最新的当前状态),但这与概念正交。也许命名空间的具体化和反射可以被操纵以允许命名空间的概念检查并以某种方式传递它们,但如果今天这样做,明天可能不会,反之亦然,因为它依赖于两种不同的塑料特性,而这种副作用在最好的。

关于c++ - 命名空间可以(是一个/满足一个)概念吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45888788/

相关文章:

c++ - 我们简单的 GRPC 示例程序中的 RPC 失败代码 14

c++ - 具有嵌套可变参数模板的函数

C# 找不到统一自动生成的类

c++ - C++ 是否保证 header 初始化的静态 const 成员在编译单元和库之间共享单个实例?

c++ - 解决链接器错误 : undefined reference to static class members

c++ - 如何在我的 sql 数据库中存储 SURF、SIFT、Harrison-Corner 特征?

C++ 运行时检查失败 #2 - 变量 'theArray' 周围的堆栈已损坏

namespaces - 虚拟主机 DNS - 它如何识别您的帐户?

c++ - 如何修复仅在使用命名空间时发生的错误 C2664

c++ - C++ 中的隐式静态变量?