我最近试图回答的一个问题似乎是 vs2012 的 c++11 支持中的错误。
具体来说,尽管只有 std::move 用于插入映射,但它无法使用不可复制构造的 value_type 编译 std::map。要么选择了错误的插入重载,要么编译器没有考虑替代方案。
基本上,我不知道是否以下代码:
#include <iostream>
#include <memory>
#include <utility>
#include <type_traits>
class Foo {
};
using namespace std;
int main() {
cout << is_constructible<pair<const int,unique_ptr<Foo> >, pair<const int,unique_ptr<Foo> >& >::value << '\n';
cout << is_constructible<pair<const int,unique_ptr<Foo> >, pair<const int,unique_ptr<Foo> >&& >::value << '\n';
}
给出输出 01。