问题标签 [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 投票
2 回答
3171 浏览

c++ - 在 std::map 中使用 std::auto_ptr 是否安全?

我知道您必须小心使用自动指针(以及为什么),尤其是使用 STL。但我认为这没有问题:

这安全吗?


我看到它会如何闯入 an std::vector,因为它必须不时复制其项目,但这对于 an 的值类型也是如此std::map吗?


编辑:显然,无论它是否安全,我都无法(技术上)填充地图,但我会将这个问题留给理论考虑。否则,认为它已关闭。

0 投票
2 回答
5895 浏览

c++ - C++03 是 C++ 标准的新版本还是只是 C++98 的技术勘误 (TC)?

我很确定我在某处的权威来源(我相信它在 WG21 页面上)读到 C++03不是C++98 的技术勘误,而是 C++ 标准的新版本。

但尽管如此,我只看到-std=c++98GCC 和其他编译器中的 switch,并且 Alf P Steinbach 发表了一些评论,暗示它可能确实是 C++98 的 TC。

所以当我写“C++03”的时候,提到C++98就足够了吗?作为一个相关的问题,使用术语“C++03”甚至是错误的吗?因为我觉得如果真的是C++98 TC1,那么在我看来就不能叫C++03了。就像我从未见过有人为 C99TC3 版本编写 C07 一样。

0 投票
1 回答
85 浏览

c++ - 强制实例化派生类型而不是基类型

假设我们有以下给定代码:

我们无法改变E

现在假设我们有:

什么方法(在 C++03 中!)我们可以强制E实例化A::T而不是::Tin E::foo,而不改变E::fooor的实现E

注意:如果真的有必要,可以E从我们指定的东西(例如A)中继承,但我不希望这样做。


一般说明:是的,这闻起来像一个设计缺陷,但我有意识地决定将一小部分集成代码稍微修改一下,以便所有其他(更大!)部分可以漂亮地独立且良好 -设计的。

0 投票
3 回答
430 浏览

c++ - Using boost::mpl, how can I get how many template classes are not "Empty", and call some macro with this number?

I want to call a macro with some arguments depending on the result of boost::mpl::eval_if (or a similar function) that could give how many template arguments are not empty. Say we have some pseudocode like the following:

I am trying to fill my class with some content depending on how many arguments are EmptyType. I wonder how such thing can be done in C++03 via Boost.MPL/Preprocessor or some other Boost library?

0 投票
1 回答
1282 浏览

c++ - unique_ptr C++03 仿真中的 move 函数

我试图了解如何实现unique_ptr 的 C++03 仿真。unique_ptr 很像 std::auto_ptr 但更安全。在 auto_ptr 隐式转移所有权(即,静默)的情况下,它会吐出编译器错误。例如,一个简单的分配。功能move是模拟 unique_ptr 安全性的关键。

问题:

  1. 为什么有三个移动功能?
  2. 第三个移动函数接受引用并将其转换为右值,实现(简化)如下。

    /li>

在上面的代码中,对 T 的显式转换似乎是不必要的。事实上,Visual Studio 2010 在没有显式转换为 T 的情况下非常满意。

但是,g++、clang、Comeau 不喜欢第二个版本。这些编译器抱怨没有构造函数unique_ptr<T>作为detail_unique_ptr::rv<T>参数。这是为什么?detail_unique_ptr::rv<T>unique_ptr 已经定义了一个作为参数的(非显式)构造函数。为什么不自动捡起那个?

0 投票
1 回答
123 浏览

c++ - 使用 C++03 模拟可变参数模板时,我们可以在类中有不同的代码吗?

我试图根据模板参数用不同的代码填充我的类,但出现编译错误。我的代码是这样的:

我收到很多错误:

现场代码在这里。所以我想知道:当用 C++03 模拟可变参数模板时,一个类中是否可以有不同的代码?

0 投票
4 回答
3210 浏览

c++ - 具有 const 成员的结构向量?

假设我有

那么,我如何保留学生的向量呢?

有没有办法做到这一点,或者我必须在堆上分配所有学生,并存储一个指向他们每个人的指针?

0 投票
1 回答
1320 浏览

c++ - 简单的 lambda 表达式 C++03 没有 boost 等等

请您提供一个想法,如何在没有特殊库的情况下以简单、优雅和智能的方式在 C++03 中实现基本的 lambda 表达式?他们应该可以做这样的事情:

我在 StackOverflow 和 Internet 的其他地方看到了很多主题,但不幸的是,我没有找到有用的东西。另一个想法是仔细研究 Boost 的实现,但遗憾的是,我现在的水平不太适合它。

先感谢您!

0 投票
2 回答
812 浏览

c++ - 检查模板参数是否为引用 [C++03]

我想在 C++03 中检查模板参数是否属于引用类型。(我们is_reference在 C++11 和 Boost 中已经有了)。

我利用了 SFINAE 以及我们不能有指向引用的指针这一事实。

这是我的解决方案

有什么特别的问题吗?谁能给我一个更好的解决方案?

0 投票
3 回答
204 浏览

c++ - 使 is_reference 在函数模板内工作以供参考,而无需知道要在其上实例化函数的类型

这是代码

输出0也是foo(c2)我不想要的。

在里面foo如何检查是否T是引用类型?我不想调用foofoo<C&>(c2)即我们不知道函数在哪种类型上被实例化。