问题标签 [using-declaration]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
413 浏览

g++ - [[deprecated]] 与 using 不兼容但与 typedef 兼容

我发现(使用 g++ 6.3)我可以使用该[[deprecated]]属性来弃用 typedef ( [[deprecated]] typedef longname shortname;) 但不能使用using声明 ( [[deprecated]] shortname = longname;)。

所以我想知道,这是有意的(如果是,为什么?)?或者这是一个错误?

这作为 MWE:

给出取决于以下警告中注释的行(有意):

或以下错误(意外)

0 投票
3 回答
249 浏览

c++ - 命名空间的组成和选择

阅读The C++ Programming Language 第 4 版(第 14.4.4 节 - 组合和选择)后,我认为以下程序可以正确编译:

预期的输出应该是

baz: 变量

巴兹:1

当我尝试编译上面的代码时,我收到一条错误消息,指出对“var”的引用不明确。使用foo::var消除了编译错误,但我想更好地理解这个问题。

我的代码有什么问题?

如何以命名空间 baz 包含的方式解决名称冲突foo::var

谢谢!

编辑

正如下面的答案所建议的,qux在命名空间内移动定义baz使其有效。因此,以下代码按预期编译

还有一件事对我来说并不完全清楚。我认为添加using namespace baz将使所有内容在baz当前范围内也可用,而无需使用baz::. 换句话说,我原以为“一切都在命名空间 baz 中工作”,在添加using namespace baz.

0 投票
1 回答
57 浏览

c++ - 函数 typedef 的使用等价物是什么?

如何使用新的1 using关键字声明函数类型?

我知道如何使用它来声明函数指针类型。例如,下面的 typedef:

似乎等同于以下 using 声明:

如何对以下非指针 typedef 执行相同操作:

我的“删除 typedef 名称并将其放在后面using”算法不起作用:

一个金螺栓链接


1至少对于像我这样仍然将“新”定义为“在 C++11 中引入”的可怜人来说。

0 投票
1 回答
132 浏览

c++ - `int*[1]` 和 `int(*)[1]` 有什么区别?

为什么t2[0](/ t1) 不可赋值?

int*[1]和 和有什么区别int(*)[1]

更新:

0 投票
2 回答
366 浏览

c++ - 基构造函数的私有使用声明不是私有的

基本构造函数的using声明是私有的,但仍然可以构造该类。为什么?

对于必须公开的operator[]'声明,可访问性的工作方式不同。using

如果我希望构造函数是私有的怎么办?可以通过using声明来完成吗?

0 投票
1 回答
26 浏览

c# - 内联使用如何使用它

在 C# 中,有时可以在代码中键入使用行宽的动词,例如

使用 (textwriter){ ..... }

我喜欢这种写作风格,我想知道我自己的 Api 需要什么。

0 投票
1 回答
326 浏览

c++ - 在 decltype 中使用命名空间

我有一个看起来或多或少像这样的函数:

  1. 函数体利用“ usingand use”习语和

  2. 感谢decltype, 如果返回类型无效,将 SFINAE。

decltype但是,一般来说它并不完美,因为我无法using std告诉begin.

也会不一致,例如何时decltype(c)begin属于不同的命名空间。

有办法解决吗?

理想情况下,我想要类似的东西

我认为 lambda 原则上可以工作

但内部禁止使用 lambda decltype


在 GCC 中,有一个有趣的语言扩展(“表达式语句”)很有前途,但是它在函数体之外不起作用(与未评估的上下文中不允许使用 lambda 相同)。 否则这将是一个解决方案。

0 投票
2 回答
137 浏览

c++ - 使用声明冲突的重载

在本例中,g++ 8.1.0 编译成功,并test()B.

clang++ 3.8.0 报告:error: call to member function 'test' is ambiguous.

哪个是对的?如果是 g++,选择的规则是B::test什么A::test

0 投票
1 回答
159 浏览

c++ - 多个复制构造函数继承中的令人惊讶的行为

从 C++11 开始,可以有两个复制构造函数,一个接受 type 参数,T&一个接受 type 参数const T&

我有一种情况,当构造函数在派生类中继承时,(似乎)添加第二个复制构造函数会导致没有一个被调用。当两者都存在时,复制构造函数会被模板化构造函数覆盖。

这是一个MWE:

运行这段代码,我们看到输出

这是预期的。

但是,添加一个额外的构造函数struct A如下:

不知何故导致另一个复制构造函数不被调用,所以输出变成

在我的用例中,我想将所有构造函数从基类继承到派生类中,包括复制构造函数和其他任何东西。但似乎这两个复制构造函数在它们都存在时不会被继承。这里发生了什么?

0 投票
1 回答
44 浏览

c++ - 模板模板参数:以下示例中应用了什么规则

假设以下示例

表达式 X<Y> x1很明显是使用打印“2”的特化

第二个很奇怪。做分析X<Z>被翻译成X< Y < T > >. 我希望打印 "1" 。但是运行代码会打印“2”。哪条规则适用于第二条?