概念是否减轻了在头文件中定义类的需要?

时间:2018-12-17 02:07:54

标签: c++ c++20

Bjarne Stroustrup提到了必须多次在头文件中定义模板的缺点。 示例:https://youtu.be/HddFGPTAmtU

我的问题是,现在是否可以通过C ++ 20中C ++的新概念功能解决?

我真的找不到任何关于此的信息,而Bjarne也不再谈论任何东西了,afaik。

2 个答案:

答案 0 :(得分:1)

概念本身并不能消除这一点,但是C ++模块会消除。 C ++模块与概念是分开的:您可以不使用概念而使用模块。但是鉴于Concepts鼓励创建通用代码,因此Modules将是非常需要的附加功能。

您将可以与#include并排使用模块:您可以根据需要使用一个或多个,或同时使用两个。模块将大大加快代码的编译速度,并且使用模块,您甚至可以在没有头文件的情况下将模板(和概念)放入cpp文件中。

答案 1 :(得分:1)

有关约束模板和与模板相关的实体的概念。概念没有而且从未尝试解决必须在头文件中定义模板的限制。

另一方面,

模块确实尝试解决该问题。不是通过让您在源文件中定义模板,而是通过在语言中添加全新的封装层并希望减少编译时间。但是,虽然已经将概念添加到C ++ 20的工作草案中,但尚未添加模块。看起来它可以制造C ++ 20,但尚不清楚是否可以。我们拭目以待。