【问题标题】:Exporting Concept From Module从模块中导出概念
【发布时间】:2021-01-14 12:32:55
【问题描述】:

我找不到任何关于 C++ 模块和概念交互的信息。从模块中导出概念的语法是否正确?

export module Module;

template <typename S>
export concept sequence = true;

【问题讨论】:

    标签: c++ module c++20 c++-concepts


    【解决方案1】:

    export 导出声明。概念定义是一个声明,因此可以导出。就此类导出工作的结果而言,它的工作方式与导出任何其他声明一样。

    至于具体语法,export应用于“声明”语法规则。而“模板声明”是一种“声明”。 “模板声明”包括模板头,但“模板声明”的语法定义说it's a "template-head" followed by a "declaration"是一个“模板头”,后跟一个“概念定义”。

    所以从语法来看,如果你想export一个概念定义,你必须在模板头之前做,因为concept-definition不包括export作为有效的语法。

    但是,如果您想知道如何导出常规模板,您可能会认为,根据该语法,export 可能位于“模板头”之前或之后。 然而standard specifically says this

    [模板声明的]声明不应是导出声明

    由此,我们得出结论,所有模板export放在模板头之前。

    【讨论】:

    • 我认为展示一个具有有效语法的示例会很有帮助。
    • @SergeKork:“所以,你的答案是:”......我不知道你在这里想说什么。答案对我来说似乎很清楚。您可以查看第三段或最后一段。
    • 所以,你的答案是:导出模块模块;导出模板 概念序列 = true; (格式问题,抱歉)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-21
    • 2019-08-23
    • 2017-04-11
    • 2022-01-22
    • 2019-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多