相同版本的clang ++不同意Mint和Debian OSX之间直接向量初始化的有效性

我似乎已经写了一些代码在OSX(塞拉利昂)和Debian(稳定),与各种版本的铿锵++的预期工作,但不希望编译与相同版本的铿锵++的薄荷(肉桂)。

就我所知,这段代码是有效的C ++ 14(并且从我正在处理的更多的代码中浓缩):

#include <iostream> #include <map> #include <vector> using frobs = std::map<int, int>; struct sampleData { frobs in; int out; }; int main(void) { std::vector<sampleData> tests{ {{}, 0}, {{{1, 2}}, 3}, }; for (const auto &tt : tests) { for (const auto &t : tt.in) { std::cout << t.first << "\n"; } } return 0; } 

并在Debian上使用clang ++ 3.5编译这样的:

 clang++ -std=c++14 -stdlib=libc++ initialiser.cpp -o initialiser 

…工作,不抱怨。 然而,在同一个铛++版本的薄荷肉桂:

 clang++-3.5 -std=c++14 -stdlib=libc++ initialiser.cpp -o initialiser 

抱怨如此:

  initialiser.cpp:14:27: error: no matching constructor for initialization of 'std::vector<sampleData>' std::vector<sampleData> tests{ 

请参阅: http : //paste.ubuntu.com/24494631/了解完整的错误。

我很困惑,特别是因为这似乎在OSX上与Xcode捆绑的铿锵++也很好。 我也在Mint和Debian上安装了libc ++ 1和libc ++ – dev,如果我在Mint上更新到更新版本的clang ++,而在Debian上正常工作,问题仍然存在。

请注意,在这种情况下,奇怪的部分是相同版本的铿锵++不同意,我不在乎这是否编译和使用G ++(尽pipe它在所有涉及的系统,如果我使用-std = c ++ 11和omit -stdlib = libc ++,这似乎不被G ++支持)。

所以,我想这些问题是:

  • 这首代码是否合法?
  • 这在某种程度上与薄荷糖有关吗?
  • 我如何得到这个工作薄荷? 我是否需要安装其他软件包或修改代码?