问题标签 [c++03]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
1879 浏览

c++ - c++03: std::map 中内置类型的默认构造函数

我一直认为下面的代码

将打印随机值,因为它会在地图中创建统一值。然而,事实证明,创建的 int 实际上总是被初始化为零并且标准内置类型在某些情况下也被初始化为零。

问题是:什么时候对标准类型(int/char/float/double/size_t)执行零初始化?我很确定,如果我int i;在不知名的地方声明,它将包含随机数据。

PS 这个问题是关于 C++03 标准的。问题的原因是,现在我不再确定何时必须为 int/float/size_t 等内置类型提供初始化,或者何时可以安全地省略它。

0 投票
3 回答
486 浏览

c++ - std::string::operator[] 结果的地址是否指向可写的、以 nul 结尾的缓冲区?

我正在修改一个接受 const char* 并使用函数 ProcessString 的函数。ProcessString 是一个函数,它需要一个以空字符结尾的字符缓冲区作为 char*。缓冲区中的字符可能会或可能不会被修改,如下面的函数签名所定义。为了“弥合差距”,我使用了一个临时的 std::string:

我的主要问题是关于 std::string::operator[] 的保证以及上面 &temp[0] 返回的地址是否是一个可用的、以空值结尾的缓冲区作为 char*。其次,非常其次,有没有更好的方法来做到这一点?

我正在使用 C++03。

0 投票
1 回答
132 浏览

c++ - 将 mem_fun_ref 与代理对象一起使用

我正在尝试使用std::mem_fun_ref(是的,已弃用的版本。原因如下)通过代理调用成员函数。

这适用于 C++11std::mem_fn但不适boost::mem_fn用于 ,但我不能使用这两种方法,因为我需要在另一个地方指定活页夹的类型,而生成的活页夹的类型未指定boost::mem_fn. 如果我可以使用,这将不是问题,decltype但我不能,因为代码需要与 C++03 兼容。

解决此问题的最简单方法是什么?一个习俗 mem_fun_through_proxy

编辑:另一个警告是proxy类不能改变。

0 投票
2 回答
679 浏览

c++ - 在 C++03 中定义覆盖是否合法

我们有一个使用许多 C++11 工具的项目,我们考虑了这个技巧以使其在 C++03 上编译。

据我所知,禁止定义 C++ 关键字,这合法吗?

0 投票
1 回答
68 浏览

c++ - 有一个 shared_pointers 列表,指向投射到基类的项目实例,什么是投射选项将项目排序到单独的列表中?

假设我们有一个基类green和这样的层次结构树:

在此处输入图像描述

我们有一个列表,greenList里面有所有的类redblue等等green。我们不创建这个列表,我们给它填充了数据。我们现在要为等类创建red列表yellow。我们确实有red等类的标题,我们不希望有getType内部green类。

如何将该列表排序到C++03 中的greenList列表等redList列表中(使用 boost)?yellowList

0 投票
4 回答
204 浏览

c++ - 这里调用了哪个构造函数?

在这段代码片段中,实际调用了哪个构造函数?

Vector 有复制构造函数、默认构造函数和赋值运算符:

getVector 按值返回。

代码使用 C++03 标准。

代码片段看起来应该调用默认构造函数,然后调用赋值运算符,但我怀疑这个声明是使用复制构造函数的另一种形式。哪个是对的?

0 投票
1 回答
105 浏览

c++ - 创建 new obj() 时如何调用基类构造函数 new base(argT argV)?

所以我有一个base带有构造函数的类,它采用(T V). 我继承obj了具有构造函数的类,()我想创建类似的东西

但是如何T val;在 C++ 中传递给 obj 基本构造函数值呢?

0 投票
2 回答
10794 浏览

c++ - 如何定义 nullptr 以同时支持 C++03 和 C++11?

可能重复:
将 nullptr“反向移植”到 C++-pre-C++0x 程序

如何定义nullptr同时支持 C++03 和 C++11?

下面的代码是否使用 C++03 和 C++11 编译而不改变 C++11 编译器中 nullptr 的含义?

0 投票
1 回答
2276 浏览

c++ - BOOST_FOREACH 使用“break”时进入无限循环?

以下代码段在 BOOST_FOREACH语句内部进入了一个无限循环,我不知道为什么。据我从 Boost 文档中可以看出,在BOOST_FOREACH循环中使用“break”应该没问题。知道这里可能出了什么问题吗?

如果我用BOOST_FOREACHfor 循环替换循环(使用迭代器 from sectors.begin()to sectors.end()),那么它工作得很好(没有无限循环)。

版本和附加信息:

  • 提升:1.40.0
  • 海湾合作委员会:4.1.2
  • 架构:x86_64
  • 我只在发布版本中得到这种行为;如果我进行调试构建,那么它会按预期工作。
  • 在 Visual Studio 下编译时,它按预期工作——即没有无限循环。

针对 mkb 的问题,这是我运行时得到的结果gcc -E

这种扩展的一个显着特点是有两个嵌套的 for 循环。我无法弄清楚内部循环和外部循环中发生了什么,但是否有可能(正如大卫所建议的那样)我只是打破了内部循环,而 BOOST_FOREACH 对某些人来说处理得并不正确原因?

0 投票
3 回答
1875 浏览

c++ - “(i+=10)+=10”在哪个版本的 C++ 标准中具有未定义的行为?

在 C++ 中,以下是否具有未定义的行为:

在对我对C 和 C++ 中 += 的结果是什么的回答的评论中对此进行了一些辩论?这里的微妙之处在于默认响应似乎是“是”,而正确的答案似乎是“它取决于 C++ 标准的版本”。

如果它确实取决于标准的版本,请说明它在哪里是 UB,在哪里不是。