Python
Java
PHP
IOS
Android
Nodejs
JavaScript
Html5
Windows
Ubuntu
Linux
C++:不同翻译单元中具有相同名称的不同类
考虑以下示例 usedclass1 hpp include
c
onedefinitionrule
为什么调用成员函数不会调用该对象的 ODR-USE?
Here in cppref http en cppreference com w cpp language initialization says 如果非内联变量 C 17 起 的初始化推迟到主 线程函数的第一条语句之后进行 它发生在第一
c
initialization
languagelawyer
onedefinitionrule
不同翻译单元中不可重载的非内联函数定义
假设我有 2 个 TU 其中有 2 个具有外部链接的非内联函数定义 其区别仅在于返回类型 我的程序违反了哪一段 基本 def odr 4 https timsong cpp github io cppwp n4659 basic def o
c
C17
languagelawyer
onedefinitionrule
链接器错误,静态常量似乎没有被 odr 使用
当您了解细节时 odr used 标准中的定义非常令人困惑 至少对我来说是这样 我通常依赖 如果引用 的非正式定义 except当左值到右值的转换可用时 对于整型常量 它们应该被视为右值 这似乎应该将其排除在引用规则之外 这是我无法链接的示
c
c14
onedefinitionrule
为什么内联用户提供的构造函数使用基类构造函数?
考虑以下说明性示例 include
c
templates
languagelawyer
onedefinitionrule
使用 scipy.ODR 的线性回归失败(解决方案未满级)
尝试使用 scipy odr 进行线性回归也是如此 然而 它却惨遭失败 scipy odr 之前曾为我工作过 我在代码中没有看到任何错误 我能想到的唯一原因是斜率可能太小 但我不明白这会如何困扰 scipy 感谢您的帮助 代码 usr bi
python
matplotlib
scipy
Regression
onedefinitionrule
访问 static constexpr std::array 而不使用类外定义
我有一个定义一些数组的类 点 hpp class Points public static constexpr std array lt double 1 gt a1 0 0 static constexpr std array lt do
C11
static
constexpr
stdarray
onedefinitionrule
为什么采用一种定义规则,而不是一种声明规则?
我已阅读以下材料 https www wikiwand com en One Definition Rule https www wikiwand com en One Definition Rule http en cppreferenc
c
onedefinitionrule
在未使用的默认成员初始值设定项中使用仍然是 odr 使用吗?
即使任何构造函数都没有使用默认成员初始值设定项 在默认成员初始值设定项中使用仍然是 odr 使用吗 例如 这个程序是否格式错误 因为g a 是否使用了 odr 因此其定义被隐式实例化 template a
c
onedefinitionrule
templateinstantiation
implicitinstantiation
Scipy.Odr 多变量回归
我想执行多维 ODRscipy odr 我读了 API 文档 它说多维是可能的 但我无法让它工作 我在互联网上找不到工作示例 而且 API 非常粗糙 没有给出如何继续的提示 这是我的 MWE import numpy as np impor
python
python3x
NumPy
scipy
onedefinitionrule
执行静态对象的析构函数时崩溃
有一个微妙的错误在我们的软件中不会以可预测的方式显现出来 当全局析构函数执行时会发生这种情况 通常这是一个 双重释放 错误 但我也看到过其他事情 NULL ptr 取消引用 对未分配任何内容的地址的 ptr 取消引用 访问未对齐 因为指针有
c
globalvariables
staticinitialization
onedefinitionrule
命名空间范围内的 constexpr 变量,带或不带显式内联定义
即使读完之后这个关于非显式内联命名空间作用域变量的问题 https stackoverflow com q 46107312 3537677 在标头中定义 我对显式内联名称空间作用域变量是否可以有点偏执 因为据我所知 违反 ODR 的行为是
c
languagelawyer
C17
onedefinitionrule
关于 ODR 违规和模板变量
我知道模板函数在链接时不会受到多个定义的影响 就像在类内部定义的成员函数一样 默认情况下是内联的 还 constexpr对象具有内部链接 但模板变量具有外部链接 我的意思是在命名空间范围内 对于 C 14 这两种情况都是如此 关于什么 te
c
templates
c14
constexpr
onedefinitionrule
是否使用了 static constexpr 变量 odr?
给出下面的代码是Foo FOO1是否使用 ODR include
c
c14
onedefinitionrule
C++ - 在模板类外部但在标头中定义成员函数
我定义了一个带有一个成员函数的简单类模板 它是在类外部定义的 并具有附加 显式 专门化 也在类外部定义 一切都在一个头文件中 如果您在多个翻译单元中包含此标头 则会因单定义规则而出现链接器错误 Header with a template
c
templates
onedefinitionrule
从标准库中重新定义函数是否违反了单一定义规则?
include
c
languagelawyer
cstandardlibrary
onedefinitionrule
在头文件中使用符合 ODR 的常量
看着另一个问题我意识到我不能通过头文件使用匿名命名空间中的对象或函数 因为这会导致类定义或内联函数中的 ODR 违规 如果是这种情况 那么是否可以使用命名const or constexpr static对象在inline功能还是安全地在课
c
C11
onedefinitionrule
通过通用引用传递静态 constexpr 变量?
在下面的 static constexpr member L在类中初始化A然后通过值或 通用 引用传递 后者在 Clang 中失败 但在 GCC 中失败 并且成员 非成员函数的行为略有不同 更详细地说 include
c
C11
staticmembers
constexpr
onedefinitionrule
对于 inline 和 constexpr 函数,“遵守 ODR”是什么意思?
我刚刚读到 constexpr 和内联函数遵循单一定义规则 但它们的定义必须相同 所以我尝试一下 inline void foo return inline void foo return int main foo 错误 重新定义 void
c
C11
inline
constexpr
onedefinitionrule
ASAN 检测到与动态加载库共享的类 vtable 的 ODR 违规
我正在开发一个项目 它有一个 util 库 其中包含日志记录 断言处理等内容 它被编译成静态库 fPIC添加 我还有一个插件系统 其中插件是在运行时加载的共享库dlopen 这些插件和主要可执行文件都使用静态 util 库 问题 现在我得到
c
sharedlibraries
AddressSanitizer
onedefinitionrule
1
2
»