【发布时间】:2021-10-21 09:57:34
【问题描述】:
C++ 标准 does not allow 代码用于转发在命名空间 std 中声明类,即使它们不是模板。
我认为没有充分的理由这样做,所以我想知道动机是什么?
这可能是一个巨大的编译时间改进。例如std::mutex 是一个简单的类,但<mutex> 标头拖入了大量的东西(至少在我的实现中)。
如果有人想知道我为什么要区分模板和非模板,那是因为模板实例化可能会根据提供的模板参数有很大差异,所以我猜这可能更难以实现/支持。
【问题讨论】:
-
那些类型可能是别名...
-
@Jarod42 你的意思是 std::string 是 basic_string
的 typedef?我也可以禁止这些。但我猜有些类型在 std:: 中确实不是模板 -
@vll Herb 肯定有幽默感,至少在 2021 年阅读时是如此。幸运的是,前向声明字符串和 ostream 在实践中并不是什么大问题,因为它们通常很小并且被广泛使用。大多数标准标题也是如此。"
标签: c++ c++20 forward-declaration