问题标签 [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.
c++ - 在 std::map 中使用 std::auto_ptr 是否安全?
我知道您必须小心使用自动指针(以及为什么),尤其是使用 STL。但我认为这没有问题:
这安全吗?
我看到它会如何闯入 an std::vector
,因为它必须不时复制其项目,但这对于 an 的值类型也是如此std::map
吗?
编辑:显然,无论它是否安全,我都无法(技术上)填充地图,但我会将这个问题留给理论考虑。否则,认为它已关闭。
c++ - C++03 是 C++ 标准的新版本还是只是 C++98 的技术勘误 (TC)?
我很确定我在某处的权威来源(我相信它在 WG21 页面上)读到 C++03不是C++98 的技术勘误,而是 C++ 标准的新版本。
但尽管如此,我只看到-std=c++98
GCC 和其他编译器中的 switch,并且 Alf P Steinbach 发表了一些评论,暗示它可能确实是 C++98 的 TC。
所以当我写“C++03”的时候,提到C++98就足够了吗?作为一个相关的问题,使用术语“C++03”甚至是错误的吗?因为我觉得如果真的是C++98 TC1,那么在我看来就不能叫C++03了。就像我从未见过有人为 C99TC3 版本编写 C07 一样。
c++ - 强制实例化派生类型而不是基类型
假设我们有以下给定代码:
我们无法改变E
。
现在假设我们有:
有什么方法(在 C++03 中!)我们可以强制E
实例化A::T
而不是::T
in E::foo
,而不改变E::foo
or的实现E
?
注意:如果真的有必要,可以E
从我们指定的东西(例如A
)中继承,但我不希望这样做。
一般说明:是的,这闻起来像一个设计缺陷,但我有意识地决定将一小部分集成代码稍微修改一下,以便所有其他(更大!)部分可以漂亮地独立且良好 -设计的。
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?
c++ - unique_ptr C++03 仿真中的 move 函数
我试图了解如何实现unique_ptr 的 C++03 仿真。unique_ptr 很像 std::auto_ptr 但更安全。在 auto_ptr 隐式转移所有权(即,静默)的情况下,它会吐出编译器错误。例如,一个简单的分配。功能move
是模拟 unique_ptr 安全性的关键。
问题:
- 为什么有三个移动功能?
第三个移动函数接受引用并将其转换为右值,实现(简化)如下。
/li>
在上面的代码中,对 T 的显式转换似乎是不必要的。事实上,Visual Studio 2010 在没有显式转换为 T 的情况下非常满意。
但是,g++、clang、Comeau 不喜欢第二个版本。这些编译器抱怨没有构造函数unique_ptr<T>
作为detail_unique_ptr::rv<T>
参数。这是为什么?detail_unique_ptr::rv<T>
unique_ptr 已经定义了一个作为参数的(非显式)构造函数。为什么不自动捡起那个?
c++ - 具有 const 成员的结构向量?
假设我有
那么,我如何保留学生的向量呢?
有没有办法做到这一点,或者我必须在堆上分配所有学生,并存储一个指向他们每个人的指针?
c++ - 简单的 lambda 表达式 C++03 没有 boost 等等
请您提供一个想法,如何在没有特殊库的情况下以简单、优雅和智能的方式在 C++03 中实现基本的 lambda 表达式?他们应该可以做这样的事情:
我在 StackOverflow 和 Internet 的其他地方看到了很多主题,但不幸的是,我没有找到有用的东西。另一个想法是仔细研究 Boost 的实现,但遗憾的是,我现在的水平不太适合它。
先感谢您!
c++ - 检查模板参数是否为引用 [C++03]
我想在 C++03 中检查模板参数是否属于引用类型。(我们is_reference
在 C++11 和 Boost 中已经有了)。
我利用了 SFINAE 以及我们不能有指向引用的指针这一事实。
这是我的解决方案
有什么特别的问题吗?谁能给我一个更好的解决方案?
c++ - 使 is_reference 在函数模板内工作以供参考,而无需知道要在其上实例化函数的类型
这是代码
输出0
也是foo(c2)
我不想要的。
在里面foo
如何检查是否T
是引用类型?我不想调用foo
,foo<C&>(c2)
即我们不知道函数在哪种类型上被实例化。