C++ 11'in yeni özelliklerini deniyorum ve bir sorun buldum. Bu benim kodudur:hatası g ++ 4.8.2 'de listelenen metod-argümanı varsayılan başlatma
#include <iostream>
#include <list>
#include <string>
using namespace std;
class A {
public:
int f (list<string> a, list<string> b={})
{
cout << a.size() << endl;
cout << b.size() << endl; // This line!!!
return 0;
}
};
int main()
{
A a;
list<string> l{"hello","world"};
a.f(l);
return 0;
}
yürütme sıkışmış "Bu hat !!!" hat. Hata ayıklamaya devam ediyorum ve problem burada gibi görünüyor.
/** Returns the number of elements in the %list. */
size_type
size() const _GLIBCXX_NOEXCEPT
{ return std::distance(begin(), end()); }
ben bu şekilde benim programı derlemek:
g++ -std=c++11 -ggdb3 -fPIC -o test TestlistInit.cpp
ben g ++ bu sürümünü kullanıyorum:
g++ (Ubuntu 4.8.2-19ubuntu1) 4.8.2
sayesinde önceden !!!
Aynı problemi 4.7.3'te de alıyorum, sadece listeyi değiştiriyorum b = liste () 'çalışır. Ama evet, bir gcc hatası gibi görünüyor. –
Barry
Kesinlikle bir hata. Bir varsayılan segman olarak bir işlevden döndürdüğünüzde [segmentation fault] (http://coliru.stacked-crooked.com/a/b1764458721a56fc) alırsınız. Ve bakalım ne [liste elemanlar içerdiğinde.] (Http://coliru.stacked-crooked.com/a/fa7a009908546074) – 0x499602D2
bu tür temel hataların hala 4.8.2 ... – Walter