Sadece bu küçük hatayı msvc ile çarptı. Bana ayrıştırma problemi gibi görünüyor ama emin değilim.
Aşağıdakiler bana C2143 sözdizimi hatası veriyor: eksik ';'Garip derleyici hatası
#include <vector>
struct X { };
X f(const std::vector<int> v)
{
for (auto i : v)
if (true)
return X{}; // <--
return X{};
}
int main()
{
const auto x = f(std::vector<int>{});
}
'}' önce önümüzdeki 4 varyasyonlar olsa gayet güzel derlemek.
Bu
X f(const std::vector<int> v)
{
for (auto i : v)
if (true)
return X(); // <--
return X{};
}
ve
X f(const std::vector<int> v)
{
for (auto i : v)
if (true) { // <--
return X{}; // <--
} // <--
return X{};
}
ve
X f(const std::vector<int> v)
{
for (auto i : v) { // <--
if (true)
return X{}; // <--
} // <--
return X{};
}
ve
X f(const std::vector<int> v)
{
//for (auto i : v) // <--
if (true)
return X{}; // <--
return X{};
}
(aptal kod duvar Maalesef.)
Bazı arcane kurallarını kaçırmıyorum veya bu bir derleyici hatası mı?
Visual Studio 2015 (V140) Express Edition Masaüstü
için bir benziyor
Hangi sürüm VS kullanıyorsunuz? – user657267
Derleme komutunuzda C++ 11'i etkinleştirdiniz mi? Belki de derleyiciniz C++ 03 için derleniyor. –
gcc'de başarısız olmaz (elbette -std = C++ 11 seçeneği ile). Yani, derleyici bir hata olmalı. –