对违反一项定义规则启用警告
有一种特殊的 ODR 违规是由足够无辜的代码引起的。 // TU1.cpp struct Foo { int Bar() { return 1; } }; // TU2.cpp struct Foo { int Bar() { retur…
C++:不同翻译单元中具有相同名称的不同类
考虑以下示例: // usedclass1.hpp #include class UsedClass { public: UsedClass() { } void doit() { std::cout << "UsedClass 1 (" << this << ")…
如何在不指定类名的情况下专门化模板?
我想创建一个名为 debug 的函数,它输出一些有关对象的信息。我的系统包含许多不同类型的对象;其中一些包含其他对象。 using namespace std; // for …
匿名命名空间和单一定义规则
我使用以下程序是否违反了单一定义规则? // foo.hpp #ifndef FOO_HPP_ #define FOO_HPP_ namespace { inline int foo() { return 1; } } inline int …
为什么 C++ 中允许多个 const 全局变量定义而不是在C语言中?
由于单一定义规则,C 或 C++ 中不允许对全局变量进行多重定义。但是,在 C++ 中,可以在多个编译单元中定义 const 全局变量,而不会出现错误。这与 C …
当名称查找发现不同的声明时,ODR 违规
我一直在思考以下几点。考虑两个文件: A.cpp: template void g(T) {} inline void f() { g(1); } B.cpp: template void g(T) {} void g(int) {} in…
谁能解释一下当前 C++0x 标准草案的这一段吗?
谁能解释一下 ISO N3242 §3.2 第 4 点中的这一说法 与 ISO 标准 2003 相比,n3242 的添加部分: 4 如果类的使用方式要求类类型完整,则翻译单元中只需…
谁能解释一下当前 C++0x 标准草案的这一段吗?
谁能解释 ISO N3242 §3.2 第 2 点中的这一说法 非安置分配或 类的释放函数是 odr-根据 a 的定义使用 该类的构造函数。一个 非放置释放函数 对于一个类…
在头文件中包含静态全局变量是否有意义?
静态变量具有文件范围。假设我有以下两个文件: file1.h file1.cpp file2.h file2.cpp 我在两个头文件中都声明了静态变量 static int Var1 。 file1.h…
你能解释一下这个 C++删除问题?
我有以下代码: std::string F() { WideString ws = GetMyWideString(); std::string ret; StringUtils::ConvertWideStringToUTF8(ws, ret); return r…
如果内联是可选的,为什么删除“inline”会导致错误? 导致链接器错误?
我有一个具有内联成员的类,但后来我决定要从标头中删除实现,因此我将函数的成员主体移到了 cpp 文件中。 起初我只是在头文件中留下了内联签名(我太…
- 共 1 页
- 1