类 static constexpr 的 C++ 链接器错误

2023-12-24

我正在编译以下简单程序g++-4.6.1 --std=c++0x:

#include <algorithm>

struct S
{
    static constexpr int X = 10;
};

int main()
{
    return std::min(S::X, 0);
};

我收到以下链接器错误:

/tmp/ccBj7UBt.o: In function `main':
scratch.cpp:(.text+0x17): undefined reference to `S::X'
collect2: ld returned 1 exit status

我意识到内联定义的静态成员没有定义符号,但我的印象是(可能有缺陷)使用constexpr告诉编译器始终将符号视为表达式;因此,编译器会知道传递对符号的引用是不合法的S::X(出于同样的原因,你不能引用文字10).

但是,如果 S 被声明为名称空间,即“名称空间 S”而不是“结构 S”,则一切都链接良好。

这是一个g++bug 还是我仍然需要使用技巧来解决这个烦恼?


我不认为这是一个错误。如果您更改constexpr to const,它仍然失败,并出现完全相同的错误。

你已经声明了S::X,但没有在任何地方定义它,因此没有存储空间。如果你用它做任何需要知道它的地址的事情,那么你还需要在某个地方定义它。

例子:

int main() {
      int i = S::X; // fine
      foo<S::X>(); // fine
      const int *p = &S::X; // needs definition
      return std::min(S::X, 0); // needs it also
}

这样做的原因是constexpr can在编译时评估,但事实并非如此required像这样进行评估,并且同样可以在运行时发生。它没有指示“编译器始终将符号视为表达式”,它暗示如果编译器愿意的话,这样做是明智且允许的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

类 static constexpr 的 C++ 链接器错误 的相关文章

  • EF Core 返回 null 关系,直到直接访问

    我有一些如下所示的模型 public class Mutant public long Id get set Relations public long OriginalCodeId get set public virtual Origi
  • SOAP Web 服务:多台服务器,一个接口

    我有一个场景 需要任意数量的服务器来提供相同的 SOAP Web 服务 我想生成一组代理类 并能够为它们提供一个位置 以便在运行时将它们指向不同的服务器 不幸的是 看起来好像wsdl port节点 子节点wsdl service 要求对特定
  • 使用 POST 的 HttpWebRequest 的性能

    我有一个用于测试网络服务的小工具 它可以使用 POST 或 GET 调用 Web 服务 使用POST的代码是 public void PerformRequest WebRequest webRequest WebRequest Creat
  • 来自 double 的 static_cast 可以优化分配给 double 吗?

    我偶然发现了一个我认为不必要的功能 并且通常让我感到害怕 float coerceToFloat double x volatile float y static cast
  • 如何从经过身份验证的 SecurityToken 中获取声明

    我将令牌作为字符串传递到 SOAP 服务中 并验证了该令牌是否有效 我现在有一个 SecurityToken 在调试模式下我可以看到所有声明 特别是我想传递到另一个方法的 userId 声明 我似乎不知道如何获得这些索赔 现在 我解码了令牌
  • 如何以编程方式删除受信任的根证书颁发机构中的证书?

    我需要能够从组织中的每台电脑中删除特定的证书 是的 我可以逐个座位 但我要到周四才能完成 而且我没有人力逐个座位 是否有使用 C 的编程方式来执行此操作 我认为你不需要编写任何 C 看看certmgr exe del http msdn m
  • Visual Studio 2013 调试器显示 std::string 的奇怪值

    我有一个大型的 cmake 生成的解决方案 其中包含许多项目 由于某种原因 我无法查看字符串的内容 因为根据调试器 Bx Buf含有一些垃圾 text c str 正确返回 Hello 该问题不仅仅发生在本地字符串上 返回的函数std st
  • Windows Phone 7 - ScrollViewer 值已更改

    我一直在寻找解决方案 但无法找到正确的解决方案 我的网格宽度为 960 并且有ScrollViewer在里面 现在我想知道滚动时滚动的值 水平偏移 我找到的所有解决方案都是针对 wpf silverlight 的 它对我不起作用 Edit
  • ASP.NET - Crystal Report Viewer 打印按钮在 ASP.NET 中不起作用

    我正在使用 Visual Studio 2008 但我遇到了水晶报告问题 当我单击打印按钮时 它会将我带到弹出窗口 但未找到页面 弹出的网址是 http localhost aspnet client System Web 2 0 5072
  • DateTime.ParseExact - 为什么 yy 变成 2015 而不是 1915

    为什么 NET 假定以下年份是 2015 年 而不是 1915 年 var d DateTime ParseExact 20 11 15 dd MM yy new CultureInfo en GB 我想 它会尝试接近 但其背后是否有合理的
  • 使用任一默认捕获模式时,这是通过复制捕获还是 (*this) 通过引用捕获?是一样的吗?

    当我看到以下工作时我有点困惑 struct A void g void f g 但后来我发现this https stackoverflow com a 16323119 5825294答案非常详细地解释了它是如何工作的 本质上 它归结为t
  • 为什么这个位图图像在加载后会改变大小?

    快速提问 我有这个1000 1000位图图像 我使用这个例程来加载它 private BitmapSource initialBitmap new BitmapImage new Uri C Users Desktop Original b
  • 如何在VS2005中使用从.bat而不是.exe启动的外部程序进行调试?

    在我的 c 项目的调试属性中 我选择了 启动外部程序 并选择了我希望将调试器附加到的程序的 exe 但是 现在我需要从 bat 文件而不是 exe 启动程序 但 VS2005 似乎不允许这样做 这可能吗 编辑 为了澄清 我需要调试从 bat
  • 从单应性估计 R/T

    我一直在尝试计算 2 个图像中的特征 然后将这些特征传递回CameraParams R没有运气 特征已成功计算并匹配 但是问题是将它们传递回R t 我明白你必须分解Homography为了使这一点成为可能 我已经使用如下方法完成了 http
  • 让 Windows 尝试读取文件

    我正在对 Windows 文件系统进行某种封装 当用户请求打开文件时 Windows 调用我的驱动程序来提供数据 在正常操作中 驱动程序返回缓存的文件内容 但是 在某些情况下 实际文件没有缓存 我需要从网络下载它 问题是是否有可能让 Win
  • 为什么我可以在另一个函数中定义一个函数?

    请参阅下面的代码 我在另一个函数中定义了一个函数 void test1 void void test2 void printf test2 n printf test1 n int main void test1 return 0 这个用法
  • 查找数组中的多个索引

    假设我有一个像这样的数组 string fruits watermelon apple apple kiwi pear banana 是否有一个内置函数可以让我查询 apple 的所有索引 例如 fruits FindAllIndex ap
  • C# 多维数组解析

    我有一个多维数组 内容在调试器中看起来像这样 数组设置为 String s new String 6 4 A B Yes C A B Yes C A B No C A B Yes C A B Yes C A B Yes C A B No C
  • 尝试后终于没有被调用

    由于某种原因 在我的控制台应用程序中 我无法运行我的finally 块 我编写这段代码是为了测试finally块是如何工作的 所以它非常简单 static void Main int i 0 try int j 1 i Generate a
  • 如何将模型绑定到动态创建的类 nancyfx

    首先感谢任何愿意查看我的问题的人 我对 Nancyfx 还很陌生 在尝试将 JSON 有效负载绑定到动态创建的类时遇到问题 我按照这篇文章中的代码动态创建了该类 在C 中动态创建一个类 https stackoverflow com que

随机推荐

  • 如何删除www. ASP.NET MVC 中的前缀

    如何删除 www 来自传入的请求 我需要设置 301 重定向还是只需重写路径 不管怎样 最好的方法是什么 Thanks 我相信使用 IIS 的 URL 重写模块来做到这一点会更合适 如果您有权访问 IIS 的管理工具 则可以在站点设置的 I
  • 如何在MATLAB中为随机数生成器设置统一种子?

    我正在编写代码并使用 MATLAB 中的现有函数 如果这些函数使用随机数生成器怎么办 有没有办法可以修复这些函数的种子而无需更改它们的代码 MATLAB 中有执行此操作的命令吗 通常代码会使用 Matlab 的内置随机数生成器 您可以使用以
  • Sublime2 和 SublimeREPL

    使用 Windows 7 Python 3 2 和 Sublime Text 2 我完成了安装 SublimeREPL 的所有说明 当我转到Tools gt SublimeREPL gt Python gt Python我收到错误 Wind
  • 使用 jest.mock 传递超出范围的变量[重复]

    这个问题在这里已经有答案了 我有一个用于模拟的模拟对象react native const MyMock MockA methodA jest genMockFn MockB ObjectB methodA jest genMockFn m
  • 拍摄/选择图片并将其显示在 ImageView 中而不先保存(使用 MvvmCross)

    我想从库中选择一张图片或用相机拍照并将结果显示到视图 ImageView 但根据一些帖子 包括this one https stackoverflow com questions 13475896 need an example of ta
  • iReport - 组织列输出?

    I am working on a profit and loss report that should look like this And my data table looks like this 对于此损益表 我有查询 1 它填充当
  • webRTC 设置信令服务器

    当系统连接在局域网中时 如何为webRTC设置信令服务器 是否强制要求我们必须使用 STUN 和 TURN 服务器进行信令 要使 WebRTC 在 LAN 上运行 您需要在该 LAN 中拥有一个信令服务器 信令服务器是任何 Web 服务器
  • Z3中的parthood定义

    我试图在 Z3 中定义集合对 使用数组定义 之间的部分关系 在下面的代码中称为 C 我写了 3 个断言来定义自反性 传递性和反对称性 但 Z3 返回 未知 我不明白为什么 define sort Set Array Int Bool dec
  • 使用模板时出现 g++ 重复符号错误(菜鸟问题)

    因此 我尝试选择 C 为此我决定使用模板编写一个通用 Group 类 该类采用类型和大小作为模板参数 在group h中 ifndef GROUP H define GROUP H define MAX SIZE 10 Define a G
  • ReflectionException:类不存在

    当我尝试运行作曲家时遇到此错误 name zepluf standard edition description The ZePLUF Standard Edition distribution autoload psr 0 src req
  • 检测对象是否已覆盖 toString() [重复]

    这个问题在这里已经有答案了 我收到一个对象并需要记录它 其中一些有习惯toString 然后我想用它 但有些没有 我得到类似的东西mightypork rogue bus events MouseMotionEvent 2d19587d 我
  • 在 Android 手机上每 66 毫秒拍照一次以进行颜色分析(心率监视器)

    我正在做一个大学最后一年的项目 其中涉及为 Android 制作一个医疗应用程序 作为练习 我必须制作一个心率监测器应用程序 我发现最好的方法是在打开闪光灯的情况下将相机放在手指上 观察血液中颜色的变化 这就是问题出现的地方 是否可以用相机
  • 为什么使用 conda 安装 rstudio,r 版本 4,在我的 Linux 系统上使用 conda 会返回有关不兼容规格的错误?

    我正在尝试使用 condas 安装 r 和 rstudio conda create c conda forge n r4rs r base 4 0 rstudio gt Collecting package metadata curren
  • MySQL数据库存储产品、颜色、尺寸和库存

    我有一个处理衬衫商店的购物车的任务 并且对存储衬衫属性 例如每个商品的颜色 尺寸和库存 的数据库设计感到困惑 假设将以下衬衫存储到数据库 Product name Nike shirt Available colors black whit
  • 如何在python中不断增加值的同时获取输入?

    我对 Python 还很陌生 我正在尝试用 python 制作一个基于文本的类似策略的游戏 我希望有一个不断增加的值 我也希望有一些其他值同时增加或减少 但这只是为了开始 但如果我使用While True循环我不能在程序中做任何其他事情 它
  • 聚合 numpy 函数

    我有一个密集调用的 numpy 操作 我需要优化 np sum a 2 axis 1 5 where a is a 2 dimensional ndarray 该操作由三个函数组成 需要迭代 a 三次 将所有操作聚合在一个函数下并沿轴 1
  • 在 Zeppelin 0.7.1 中运行 Spark 代码时出现 NullPointerException

    我已经安装了Zeppelin 0 7 1 当我尝试执行示例 Spark 程序 可通过Zeppelin Tutorial笔记本 我收到以下错误 java lang NullPointerException at org apache zepp
  • 如何在执行junit时自动生成时序图

    我在 Eclipse 中接到了 在执行 junit 测试用例时自动生成序列图 的任务 我正在学习UML 我找到了可以生成序列的工具 并且我知道 junit 但是我如何将这两者结合起来 我发现不错的工具有 UMLet ModelGoon UM
  • 使用 HOGDescriptor 的问题

    我正在摆弄一些c opencv 我正在查看一些样本 但还没有 设法编译 运行 peopleDetect cpp 它使用HOGDescriptor 我已经设置了一个基本的 Qt 控制台应用程序来测试和缩小问题范围 并得到了这个基本代码 inc
  • 类 static constexpr 的 C++ 链接器错误

    我正在编译以下简单程序g 4 6 1 std c 0x include