我似乎已经写了一些代码在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 ++支持)。
所以,我想这些问题是: