【问题标题】:Does the C++ 20 working draft include aliasing imported modules?C++ 20 工作草案是否包含别名导入的模块?
【发布时间】:2018-07-14 01:04:00
【问题描述】:

Modules TS 是否包含导入模块的别名符号?我做了一些简短的搜索,但没有看到任何提到这一点的内容。

事后看来是个坏例子,但我很好奇是否有任何与 ES201N 等效的 c++

import { MyThing as OtherThing } from "ThingModule"

【问题讨论】:

  • 您要问的内容是否有已知术语?到目前为止,Google 搜索 "c++" "type aliasing imported modules" 返回的结果为零。也许您可以添加一个解释,说明您认为示例代码的效果。
  • 这基本上就是我要找的。 C++ 具有类型别名,例如使用标识符 = 类型;其他语言的某些模块系统允许您在同一语句中为您的导入设置别名,这很好,例如将 foo 导入为 bar。但同样,我的轻量级谷歌搜索并没有发现任何与此和 c++ 20 草案有关的信息。
  • 所以你不是在谈论类型别名而是重命名导入的符号(不是类型)?

标签: c++ c++-modules


【解决方案1】:

“模块 TS”包括对 import std 的支持,但没有像 import std::cout 这样的支持。此外,std::cout 是一个值,而不是一个类型。所以你需要 import std 然后做任何你可以做的事情,因为 C++11 到别名 std::cout,例如:

import std;
auto& myCout = std::cout;

编辑:稍后您编辑了问题。答案仍然是否定的,因为您要求在模块中导入特定的东西,而模块 TS 不支持。

【讨论】:

  • 我用一个更好的例子更新了我的问题。 import std::cout 并不是我真正想要表达的。如果您可以修改答案以反映所做的修改,我将接受此作为正确答案。
  • 你已经大大改变了你的问题,但我认为我的回答仍然适用。您现在引用了“ES201N”,这又不是一个可以用谷歌搜索的术语,所以我不知道那是什么。我暂时不回答这个问题,因为我不知道我会改变什么,而且我对追逐不断变化的问题并不感兴趣。
  • ES201N 指的是 ES2015、ES2016、ES2017、ES6、ES7、ESN 中的任何一个,无论他们现在所说的现代 javascript。我的问题符合我的初衷。我对 c++ 和一般类型的语言相对较新,因此为我的行话不准确表示歉意。这就是我来这里询问的原因。
  • 好的,我在答案中添加了一些内容(归结为“否”)。我希望你会明白,当 Google 不知道时,许多 C++ 人不知道 ES201N 指的是什么。 “ECMAScript”是可理解的,可在 Google 上搜索。
猜你喜欢
  • 1970-01-01
  • 2021-11-06
  • 2016-10-26
  • 1970-01-01
  • 2021-08-11
  • 1970-01-01
  • 2015-07-17
  • 2021-02-23
  • 1970-01-01
相关资源
最近更新 更多