Ben GCC 4.9.1 veya çınlama kullanarak kodumu derlemeye çalıştım ben MSVC 2013 yılında std :: rbegin ve std :: rend kullanıyoruz 3.5.0, her ikisi de 'rbegin' ve 'rend' adlarının 'std' ad alanının bir parçası olmadığını söylüyor.std :: rbegin ve GCC 4.9 de std :: parçalamak fonksiyonu ve çınlama 3.5
Aşağıdaki kod örneğine bakın. Yanlış bir şey mi yapıyorum yoksa henüz GCC ve clang'da uygulanmadılar mı?
// test.cpp
#include <vector>
#include <iostream>
#include <iterator>
int main(int, char**)
{
std::vector<int> test = {1, 2, 3 ,4, 5};
for (auto it = std::rbegin(test); it != std::rend(test); ++it) {
std::cout << *it << ", ";
}
std::cout << std::endl;
return 0;
}
GCC çıkışı:
g++ --std=c++14 test.cpp -o test && ./test
test.cpp: In function ‘int main(int, char**)’:
test.cpp:10:20: error: ‘rbegin’ is not a member of ‘std’
for (auto it = std::rbegin(test); it != std::rend(test); ++it) {
^
test.cpp:10:45: error: ‘rend’ is not a member of ‘std’
for (auto it = std::rbegin(test); it != std::rend(test); ++it) {
^
clang çıkışı ile üretilen, benzer: -std=c++14 -stdlib=libc++
seçeneğini kullanarak Clang 3.5 ile
clang++ --std=c++14 test.cpp -o test && ./test
GCC'yi Clang ile karşılaştırıyorsunuz ancak her ikisi de libstdC++'yi varsayılan olarak kullanıyor ve gerçekten karşılaştırmanız gereken standart kitaplık uygulamaları. –