Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 无序的_映射-{key,value},{key,value}语法无效_C++_Visual C++_C++11_Visual Studio 2012_Std - Fatal编程技术网

C++ 无序的_映射-{key,value},{key,value}语法无效

C++ 无序的_映射-{key,value},{key,value}语法无效,c++,visual-c++,c++11,visual-studio-2012,std,C++,Visual C++,C++11,Visual Studio 2012,Std,我正在试着编译 我遗漏了什么吗?Visual Studio 2012缺少许多现代C++功能,其中包括初始化列表。请参阅以获取概述。更准确地说,VS2012 CTP中提供了初始值设定项列表,但该更新尚未发布,并且在标准库中不包含对初始值设定项列表的支持-瞧,它们很接近,但Microsoft尚未完全完成。您的代码没有问题,它可以很好地编译GCC和Clang。这个问题是用Visual C++来实现的。 初始化列表是Visual Studio 2012更新2中可用的功能之一。这意味着您当前无法在Visu

我正在试着编译


我遗漏了什么吗?

Visual Studio 2012缺少许多现代C++功能,其中包括
初始化列表。请参阅以获取概述。

更准确地说,VS2012 CTP中提供了初始值设定项列表,但该更新尚未发布,并且在标准库中不包含对初始值设定项列表的支持-瞧,它们很接近,但Microsoft尚未完全完成。

您的代码没有问题,它可以很好地编译GCC和Clang。这个问题是用Visual C++来实现的。 初始化列表是Visual Studio 2012更新2中可用的功能之一。这意味着您当前无法在Visual Studio 2012中使用此功能。有一系列的问题,但它们带来了一些小问题,包括缺少IntelliSense支持和非常明确的免责声明,表示它们不打算用于生产代码

因此,简而言之:您的代码是正确的,但在Microsoft发布Visual Studio 2012 Update 2之前,它不会在VS2012中编译。目前还不知道这将在何时到来,但Visual Studio 2012首次发布于2012年8月,最后一次更新(更新1)于2012年11月发布。从那以后,关于这个话题的新闻就很少了,但从去年年底开始,它就“很快就要来了”

更新
现在,他已经被释放了。然而,它不包括任何承诺的C++改进从更新2 CTPS。这很有趣,因为它们应该是更新2中即将出现的内容的预览。显然,VisualC++团队正在“完成这些特性的发布计划”,并且“不久将分享更多的细节”。(来自网站上的评论。)

对gcc有效:然而,目前这是事实。最近我没说永远不会,赫伯·萨特和斯蒂芬·t。lavavej在他们的博客/第9频道上一直保持沉默,这可能预示着一个即将发布的版本,我也希望如此,但我对微软的日程安排感到非常恼火。它们仍然有模板别名、=delete/=default、noexcept、constexpr和其他一些有用的东西。
// constructing unordered_maps
#include <iostream>
#include <string>
#include <unordered_map>

typedef std::unordered_map<std::string,std::string> stringmap;

stringmap merge (stringmap a,stringmap b) {
  stringmap temp(a); temp.insert(b.begin(),b.end()); return temp;
}

int main ()
{
  stringmap first;                              // empty
  stringmap second ( {{"apple","red"},{"lemon","yellow"}} );       // init list
  stringmap third ( {{"orange","orange"},{"strawberry","red"}} );  // init list
  stringmap fourth (second);                    // copy
  stringmap fifth (merge(third,fourth));        // move
  stringmap sixth (fifth.begin(),fifth.end());  // range

  std::cout << "sixth contains:";
  for (auto& x: sixth) std::cout << " " << x.first << ":" << x.second;
  std::cout << std::endl;

  return 0;
}
stringmap second ( {{"apple","red"},{"lemon","yellow"}} );       // init list