using-declaration相关内容

使用声明的命名空间(GCC/VS2010 中的错误)?

命名空间 A{诠释我;}诠释主要(){使用 A::i;使用 A::i;} VS2010 - 编译良好 gcc (ideone) - 编译良好 Comeau - 给出错误“ComeauTest.c",第 10 行:错误:“i"已在当前范围内声明使用 A::i;" $7.3.3/8 - “使用声明是声明,因此可以使用反复在哪里(并且只在哪里)允许多个声明." 上面的例子表明代码确实格 ..
发布时间:2022-01-14 23:41:44 C/C++开发

C++11 中的“typedef"和“using"有什么区别?

我知道在 C++11 中我们现在可以使用 using 来编写类型别名,比如 typedefs: typedef int MyInt; 据我所知,相当于: using MyInt = int; 这种新的语法是为了有一种表达“模板类型定义"的方法而产生的: 模板使用 MyType = AnotherType; 但是,对于前两个非模板示例,标准中是否还有其他细微差别?例如,typedefs ..
发布时间:2021-12-01 15:22:20 C/C++开发

C++ 概念精简版和类型别名声明

是否可以使用 typedef 或 using 在概念内声明类型别名,如概念 TS 所提议的那样?如果我尝试类似下面的 MWE,代码不会编译(使用 gcc 6.2.1 和 -fconcepts 开关) #include 模板概念 bool TestConcept (){返回要求(T t){使用 V = T;std::is_integral::value;};}int main(){返回0;} ..
发布时间:2021-09-11 19:47:04 C/C++开发

声明名称,引入名称和声明实体之间的区别

根据C ++ 11标准,第7.3.3节[namespace.udecl]/1: 使用声明将名称引入显示使用声明的声明区域. 使用声明: 使用类型名 opt 嵌套名称说明符unqualified-id ; using :: unqualified-id ; 在使用说明中出现的声明区域中声明使用声明中指定的成员名称. 在使用声明出现的声明区域中声明名称是什么意思? ..
发布时间:2021-04-29 20:39:50 C/C++开发

带有枚举的“使用"声明

使用 声明似乎不适用于枚举类型: class Sample {上市:枚举颜色{红色,蓝色,绿色};}使用Sample :: Colour; 不起作用! 我们是否需要为每个枚举类型的枚举符添加一个 using 声明?如下所示: 使用sample :: Colour :: RED; 解决方案 一个类未定义名称空间,因此“使用"表示该名称空间.在这里不适用. 此外,您需要公开 ..
发布时间:2021-04-19 18:41:16 C/C++开发

使用声明(派生类)

结构B1 { int d; void fb(){}; }; 结构B2:B1 { 使用B1 :: d; 使用B1 :: fb; int d; //为什么会产生错误? void fb(){} //,这不是吗? }; int main(){} 是因为, B1 :: fb()被视为 B1 :: fb(B1 *) 和B2 :: fb()被视为 B2 : ..
发布时间:2020-10-21 00:03:53 C/C++开发

使用-声明现有名称空间类型与创建类型别名

这不是关于using和typedef在创建类型别名方面的区别的问题.我想提供从代码块或函数内部的命名空间访问现有类型的方法. 我发现了两种不同的方式: 我可以使用using声明“包含"类型: using typename mynamespace::mytype; 或者我可以创建一个类型别名: typedef mynamespace::mytype mytype; us ..
发布时间:2020-07-12 04:40:00 C/C++开发

在命名空间中使用指令导致的错误示例

我试图了解在名称空间中包含using声明会引起什么样的错误.我考虑了这些 我正在尝试创建一个示例,其中由于使用using声明而导致一个错误,该错误是由于将一个名称静默替换为在另一个文件之前加载的头文件而引起的. 这里我要定义MyProject::vector: // base.h #ifndef BASE_H #define BASE_H namespace MyProject { ..

为什么(无关紧要的)使用声明可以使重载歧义与基于参数的查找相协调?

这是问题的后续操作,此处关于具有依赖于参数的查询(ADL)的函数重载.我想检查一下我在这种情况下对规则的理解,因此编写了一些测试代码. 首先,当然,std中没有HasPtr类的交换,因此我编写了自己的命名空间,除了在全局范围中已定义的命名空间之外,该命名空间还包含交换的HasPtr版本. using声明的工作与我预期的一样-产生了歧义错误,因为已经定义了交换的HasPtr版本,如5ed中的" ..