C++03。在编译时测试右值与左值,而不仅仅是在运行时
在 C++03 中,Boost 的 Foreach 使用这种有趣的技术,可以检测在运行时表达式是左值还是右值。 (我发现通过这个StackOverflow问题:C++03中的Rvalues…
“向后移植” nullptr 到 C++-pre-C++0x 程序
或多或少如标题所暗示的那样。虽然我尚未使用C++0x我我希望在这种情况发生时做好准备,并且我还希望减少为使用其某些功能而必须重写的代码量。这样我…
具有 const 成员的结构向量?
假设我有 #include #include using namespace std; struct Student { const string name; int grade; Student(const string &name) : name(name) { } …
检查模板参数是否是引用 [C++03]
我想检查 C++03 中的模板参数是否为引用类型。 (我们在 C++11 和 Boost 中已经有了 is_reference)。 我利用了 SFINAE 以及我们无法拥有指向引用的指…
unique_ptr C++03 仿真中的 move 函数
我试图了解 C++03 模拟 unique_ptr 是如何实现的。 unique_ptr 很像 std::auto_ptr 但更安全。在 auto_ptr 隐式(即静默)转移所有权的情况下,它会抛…
使用 C++03 模拟 Variadic 模板时,我们可以在类中使用不同的代码吗?
我试图根据模板参数用不同的代码填充我的类,但出现编译错误。我的代码是这样的: #include #include struct EmptyType { }; template class my_class…
使用 boost::mpl,我如何获得有多少模板类不是“空”,并用这个数字调用一些宏?
我想根据 boost::mpl::eval_if (或类似函数)的结果来调用带有一些参数的宏,这些参数可以给出有多少个模板参数不为空。假设我们有一些如下所示的伪…
C++03 是 C++ 的新版本吗?标准还是只是 C++98 的技术勘误表 (TC)?
我很确定我在某个权威来源上读到过(我相信是在 WG21 页面上),C++03 不是 C++98 的技术勘误表,而是一个新的版本。 C++ 标准的发布。 但尽管如此,…
强制实例化派生类型而不是基类型
假设我们有以下给定代码: class T; // with T::~T is virtual class S; class E { void foo() { /* ... */ S s; T* t = new T(s); /* ... */ delete …
在 std::map 中使用 std::auto_ptr 安全吗?
我知道您必须小心使用自动指针(以及原因),尤其是使用 STL。但我不认为这有什么问题: std::map >; 这安全吗? 我看到它如何在 std::vector 中中断…
POD 与非 POD 类类型的默认初始化
C++ 标准表示 (8.5/5): 默认初始化T类型的对象意味着: 如果 T 是非 POD 类类型(第 9 条),则调用 T 的默认构造函数(如果T 没有 可访问的默认构造…
在类内初始化固定大小的常量数组
考虑以下类: class A { const int arr[2]; public: A() { } }; 是否可以从构造函数初始值设定项列表或以除声明它的行以外的任何其他方式初始化 arr(…