C++11 Polyfills

2024-04-03

我正在开始一个新项目,目标是MSVC, GCC (latest), GCC 4.3 ARM和更多。这waf我们已经构建了构建系统C++11编译器的功能检测。

我现在拥有针对我目标的编译器中所有功能的预处理器宏C++11, 例如#ifdef WAF_FEATURE_CXX_STRONGLY_TYPED_ENUMS。因此,我可以根据编译器支持的内容编译不同的代码。作为GCC几乎支持这一切MSVC甚至不接近(即使MSVC 11)

这让我开始考虑 Web 开发 Polyfills - 如果该功能不可用,请使用可用的功能集来实现它。

这远不像 Web 开发 Polyfill 那么简单C++11但是如果编译器不支持的话,我可以用 C++03 简单地实现什么吗?

这归结为这样一个事实:我想在我的公共 API 中使用强类型枚举器,但范围界定MyClass::MyEnumerator::EnumValue会看起来更像MyClass::EnumValue in C++03。无论如何我可以让同样的事情发生在C++03 easily:

class MyClass {
    public:
#ifdef WAF_FEATURE_CXX_STRONGLY_TYPED_ENUMS
        enum class MyEnumerator : unsigned int {
#else
        enum MyEnumerator {
#endif
             EnumValue = 0
        }
    void method(MyEnumerator e);
}

MyClass mc = new MyClass();
mc.method(MyClass::MyEnumerator::EnumValue) // C++11
mc.method(MyClass::EnumValue)               // C++03 :(

这就是您需要做的(我对指针和非指针访问进行了其他简单的修复)。 基本上,这就是@demi 所说的。我必须创建一个虚拟枚举名称。这适用于 g++-4.7。

class MyClass {
    public:
#if __cplusplus > 201000
        enum class MyEnumerator : unsigned int {
             EnumValue = 0
        };
    void method(MyEnumerator e) {}
#else
        class MyEnumerator {
        public:
          enum Dummy {
             EnumValue = 0
          };
        };
    void method(MyEnumerator::Dummy e) {}
#endif
};

int main() {
    MyClass mc;
    mc.method(MyClass::MyEnumerator::EnumValue); // C++11 or C++03
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++11 Polyfills 的相关文章

  • 添加对共享类的多个 WCF 服务的服务引用

    我正在尝试将我的 WCF Web 服务拆分为几个服务 而不是一个巨大的服务 但是 Visual Studio Silverlight 客户端 复制了两个服务共享的公共类 这是一个简单的例子来说明我的问题 在此示例中 有两个服务 两者都返回类
  • 在 C++ 中分割大文件

    我正在尝试编写一个程序 该程序接受一个大文件 任何类型 并将其分成许多较小的 块 我想我已经有了基本的想法 但由于某种原因我无法创建超过 12 kb 的块大小 我知道谷歌等上有一些解决方案 但我更感兴趣的是了解这个限制的根源是什么 然后实际
  • 如何进行带有偏差的浮点舍入(始终向上或向下舍入)?

    我想以偏置舍入浮动 要么总是向下 要么总是向上 代码中有一个特定的点 我需要这个 程序的其余部分应该像往常一样四舍五入到最接近的值 例如 我想四舍五入到最接近的 1 10 倍数 最接近 7 10 的浮点数约为 0 69999998807 但
  • 在 C++11 中省略返回类型

    我最近发现自己在 C 11 模式下的 gcc 4 5 中使用了以下宏 define RETURN x gt decltype x return x 并编写这样的函数 template
  • Guid 应包含 32 位数字和 4 个破折号

    我有一个包含 createuserwizard 控件的网站 创建帐户后 验证电子邮件及其验证 URL 将发送到用户的电子邮件地址 但是 当我进行测试运行时 单击电子邮件中的 URL 时 会出现以下错误 Guid should contain
  • ZLIB 解压缩

    我编写了一个小型应用程序 该应用程序应该解压缩以 gzip deflate 格式编码的数据 为了实现这一点 我使用 ZLIB 库 使用解压缩功能 问题是这个功能不起作用 换句话说 数据不是未压缩的 我在这里发布代码 int decompre
  • VS30063:您无权访问 https://dev.azure.com

    我正在尝试在 asp net core 2 1 mvc 应用程序中使用以下代码连接 Azure DevOps Uri orgUrl new Uri https dev azure com xxxxx String personalAcces
  • C++11 函数局部静态 const 对象的线程安全初始化

    这个问题已在 C 98 上下文中提出 并在该上下文中得到回答 但没有明确说明有关 C 11 的内容 const some type create const thingy lock my lock some mutex static con
  • 为什么 std::allocator 在 C++17 中丢失成员类型/函数?

    一边看着std 分配器 http en cppreference com w cpp memory allocator 我看到成员 value type pointer const pointer reference const refer
  • 为什么 FTPWebRequest 或 WebRequest 通常不接受 /../ 路径?

    我正在尝试从 ftp Web 服务器自动执行一些上传 下载任务 当我通过客户端甚至通过 Firefox 连接到服务器时 为了访问我的目录 我必须指定如下路径 ftp ftpserver com AB00000 incoming files
  • 事件日志写入错误

    很简单 我想向事件日志写入一些内容 protected override void OnStop TODO Add code here to perform any tear down necessary to stop your serv
  • 用于从字符串安全转换的辅助函数

    回到 VB6 我编写了一些函数 让我在编码时无需关心字符串的 null 和 数字的 null 和 0 等之间的区别 编码时 没有什么比添加特殊情况更能降低我的工作效率了用于处理可能导致一些不相关错误的数据的代码 9999 10000 如果我
  • Qt - 设置不可编辑的QComboBox的显示文本

    我想将 QComboBox 的文本设置为某些自定义文本 不在 QComboBox 的列表中 而不将此文本添加为 QComboBox 的项目 此行为可以在可编辑的 QComboBox 上实现QComboBox setEditText cons
  • 从匿名类型获取值

    我有一个方法如下 public void MyMethod object obj implement 我这样称呼它 MyMethod new myparam waoww 那么我该如何实施MyMethod 获取 myparam 值 Edit
  • Silverlight Datagrid:在对列进行排序时突出显示整个列

    我的 Silverlight 应用程序中有一个 DataGrid 我想在对该列进行排序时突出显示整个列 它在概念上与上一个问题类似 Silverlight DataGrid 突出显示整列 https stackoverflow com qu
  • 32位PPC rlwinm指令

    我在理解上有点困难rlwinmPPC 汇编指令 旋转左字立即然后与掩码 我正在尝试反转函数的这一部分 rlwinm r3 r3 0 28 28 我已经知道什么了r3 is r3在本例中是一个 4 字节整数 但我不确定这条指令到底是什么rlw
  • 同时从多个流中捕获、最佳方法以及如何减少 CPU 使用率

    我目前正在编写一个应用程序 该应用程序将捕获大量 RTSP 流 在我的例子中为 12 个 并将其显示在 QT 小部件上 当我超过大约 6 7 个流时 问题就会出现 CPU 使用率激增并且出现明显的卡顿 我认为它不是 QT 绘制函数的原因是因
  • 如何在 GCC 5 中处理双 ABI?

    我尝试了解如何克服 GCC 5 中引入的双重 ABI 的问题 但是 我没能做到 这是一个重现错误的非常简单的示例 我使用的GCC版本是5 2 如您所见 我的主要函数 在 main cpp 文件中 非常简单 main cpp include
  • Azure函数版本2.0-应用程序blobTrigger不工作

    我有一个工作功能应用程序 它有一个 blob 输入和一个事件中心输出 在测试版中工作 随着最新的更改 我的功能不再起作用 我尝试根据发行说明更新 host json 文件 但它没有引用 blob 触发器 version 2 0 extens
  • WPF/数据集:如何通过 XAML 将相关表中的数据绑定到数据网格列中?

    我正在使用 WPF DataSet 连接到 SQL Server Express XAML 和 C Visual Studio 2013 Express 我从名为 BankNoteBook 的现有 SQL Server Express 数据

随机推荐

  • RestSharp - 如何处理非 200 响应? RestClient 在执行时抛出异常

    我在 Windows Phone 8 1 应用程序中使用 RestSharp 当服务器返回代码不同于 200 的响应时 RestClient 会抛出异常 Wiki https github com restsharp RestSharp w
  • Laravel Dusk 错误:无法连接到本地主机端口 9515:连接被拒绝

    正如标题所示 我已经全新安装了 Laravel 5 4 和最新的 Homestead 1 0 1 但是 当我运行一个简单的 Dusk 测试用例时 出现以下错误 无法连接到本地主机端口 9515 连接被拒绝 有人知道如何处理这个问题吗 我尝试
  • Framer Motion - 过时的自定义值 - 更改自定义值不会触发更新

    Using 成帧器运动 https www framer com api motion 我有一个问题 更新我传递的对象custom支撑到motion div变体不会触发预期的样式更改 我创建了以下沙箱来演示该问题 https codesan
  • 使用 Android 数据绑定动态切换布局元素的可见性。

    我正在构建一个 Android 应用程序 我想在其中根据按钮单击切换某些视图元素的可见性 我试图使用数据绑定而不是使用 findViewById 来存档它 但是当变量更改时 我到目前为止找到的所有解决方案都不会更新布局 这是我到目前为止所拥
  • 非 IDR 图片 NAL 单元 - 0x21 和 0x61 含义

    有谁知道是什么0x21 and 0x61是指在 h 264 编码的视频流中吗 我知道0x01意味着它是一个b frame and 0x41意味着它是一个p frame 我的编码视频给了我两个0x21帧后跟一帧b frame I 21 21
  • 如何调试eex模板和@变量?

    我有这个模板 div class alert alert danger p Oops something went wrong Please check the errors below p div 如何在 IEx 控制台中显示 chang
  • Jackson 绑定具有不同名称的对象列表

    所以我有两堂课 public class Catalog private List
  • Parse.com 推送无法在 Windows Phone 8.1 上运行

    我们正在使用Parse https parse com 适用于 Android 和 IOS 上的推送通知并且工作正常 我正在开发 Windows 8 1 应用程序 但无法使其工作 该应用程序是使用 javascript html css 开
  • 为什么 Google 在前面添加 while(1);他们的 JSON 响应?

    谷歌为什么要前置while 1 他们的 私人 JSON 响应 例如 以下是打开和关闭日历时的响应谷歌日历 https calendar google com calendar about while 1 u smsSentFlag fals
  • 在服务器端 Blazor 项目中构建身份时出错

    我正在开发一个服务器端 Blazor 应用程序 该应用程序是使用为身份验证选择的 个人用户帐户 选项创建的 我现在想要自定义登录页面 但是当我选择通过脚手架添加身份页面时 我收到以下错误 并且我不确定从哪里开始进行故障排除 无法在内存中编译
  • UIBezierPath 撤消绘图重绘 UIImageView 的图像

    我试图通过重绘我创建的 NSMutableArray 中的所有 UIBezierPath 和关联的 UIColor 来重绘 UIImageView 的图像 减去点击撤消 UIButton 时的最后一个路径 但是 在这种情况下 UIImage
  • 比较javascript中两个变量是否引用同一个对象

    我正在寻找一种方法来检查两个变量是否引用 JavaScript 中的同一个对象 ex var a foo bar var b foo bar var aa a testSame a b false testSame a aa true va
  • 将整数列转换为双精度

    我导入了 2 个包含实验数据的 csv 文件 一个是对照组 一个是测试组 此处显示头部 问题在于 在 Gaze T 中 列 5 的类型为 double 而在 Gaze C 中 列的类型为整数 因此 当对两个数据帧中的距离进行总结时 我得到不
  • 如何调用重置选择并选择jqGrid中的所有内容?

    如何重置所选行并在单击外部按钮时选择所有行 我正在尝试重置选择 但不起作用 jQuery selectAll click function jQuery cbox trigger click jQuery clear click funct
  • 如何以编程方式设置 selectize.js 选项列表?

    我知道如何设置optionList on 初始化但我如何以编程方式设置它 我有一个邀请列表 array select invite options inviteList 您可以使用 load 方法通过以下方式设置选项编程式API https
  • Gulp:无依赖的同步性

    我正在将构建系统迁移到 gulp 并且遇到了一个问题 我定义了各种构建任务 scripts style jade等 以及clean删除所有构建文件的任务 我想确保构建任务不会在清理任务之前运行 BUT我还希望能够在不先清理的情况下运行构建任
  • 如何防止用户关闭我的应用程序?

    我有一个将在餐厅使用的 Android 应用程序 所以我希望用户无法退出该应用程序 用户唯一可以做的就是使用应用程序 如果可能的话 只有管理员可以通过登录或重新启动设备退出应用程序 我不知道哪种方法是最好的方法 有解决方案或其他方法来做到这
  • PayPal iOS 和 Android SDK 中的 PAYMENT_CREATION_ERROR

    今天 我在 iOS 应用程序中使用 PayPal 结帐时遇到问题 用户登录后 我收到错误 PayPal SDK 请求失败 出现错误 PAYMENT CREATION ERROR 设置此付款时出现问题 请访问 PayPal 网站检查您的帐户
  • 虚拟审判室设计

    作为我的硕士项目的一部分 我建议构建一个用于零售服装店的虚拟试用室应用程序 目前 它旨在直接在商店中使用 但也可能扩展到在线商店 该应用程序将通过在屏幕上的 3D 复制品上展示选定的服装 向客户展示所选服装的外观 它涉及3个步骤 评估客户
  • C++11 Polyfills

    我正在开始一个新项目 目标是MSVC GCC latest GCC 4 3 ARM和更多 这waf我们已经构建了构建系统C 11编译器的功能检测 我现在拥有针对我目标的编译器中所有功能的预处理器宏C 11 例如 ifdef WAF FEAT