मैं C++ 11 की नई विशेषताओं को आजमा रहा हूं और मुझे कोई समस्या मिली। यह मेरा कोड है:सूची विधि पर g ++ 4.8.2 पर त्रुटि-तर्क डिफ़ॉल्ट प्रारंभिक
#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;
}
निष्पादन "यह रेखा !!!" पर फंस गया लाइन। मैं डीबगिंग जारी रखता हूं और ऐसा लगता है कि समस्या यहां है। पहले से
g++ (Ubuntu 4.8.2-19ubuntu1) 4.8.2
धन्यवाद !!!:
/** Returns the number of elements in the %list. */
size_type
size() const _GLIBCXX_NOEXCEPT
{ return std::distance(begin(), end()); }
मैं इस तरह से मेरा कार्यक्रम संकलन:
g++ -std=c++11 -ggdb3 -fPIC -o test TestlistInit.cpp
मैं जी ++ के इस संस्करण का उपयोग कर रहा
मुझे 4.7.3 पर एक ही समस्या मिलती है, दिलचस्प रूप से 'सूची बी = सूची () 'कार्यों को बदलती है। लेकिन हाँ, एक जीसीसी बग की तरह लगता है। –
Barry
निश्चित रूप से एक बग। आपको एक [सेगमेंटेशन गलती] मिलती है (http://coliru.stacked-crooked.com/a/b1764458721a56fc) जब आप इसे फ़ंक्शन से डिफ़ॉल्ट तर्क के रूप में वापस करते हैं। और देखें कि क्या होता है [जब सूची में तत्व होते हैं।] (Http://coliru.stacked-crooked.com/a/fa7a009908546074) – 0x499602D2
अविश्वसनीय है कि ऐसी प्राथमिक बग अभी भी 4.8.2 में हैं ... – Walter