साथ सी ++ 14सी ++ प्रारंभकर्ता सूची और मूलभूत मूल्यों
using namespace std;
struct Point
{
int x = 0;
int y = 0;
};
Point p2 {1, 1};
यह बजना ++ 7.0 के साथ ठीक संकलित है, यह दोनों ही मामलों में मैं पारित --std = c जी ++ 4.9 के साथ काम नहीं करता है इस कोड को मान्य है कंपाइलर के लिए ++ 1y।
जी ++ में यह तब काम करता है जब मैं संरचना परिभाषा से डिफ़ॉल्ट मान हटा देता हूं।
g++ test_constexpr_ctor.cc --std=c++1y -o test
test_constexpr_ctor.cc:7:15: error: no matching function for call to ‘Point::Point(<brace-enclosed initializer list>)’
Point p2 {1, 1};
^
test_constexpr_ctor.cc:7:15: note: candidates are:
test_constexpr_ctor.cc:1:8: note: constexpr Point::Point()
struct Point
^
test_constexpr_ctor.cc:1:8: note: candidate expects 0 arguments, 2 provided
test_constexpr_ctor.cc:1:8: note: constexpr Point::Point(const Point&)
test_constexpr_ctor.cc:1:8: note: candidate expects 1 argument, 2 provided
test_constexpr_ctor.cc:1:8: note: constexpr Point::Point(Point&&)
test_constexpr_ctor.cc:1:8: note: candidate expects 1 argument, 2 provided
शायद एक जीसीसी 4.9 बग। – 101010
यह पुराने जी ++ की एक बग है। इसे एक नए संस्करण में अपडेट करें और यह सफलतापूर्वक संकलित करता है। –
@VictorPolevoy क्या आपने G ++ संस्करण का परीक्षण किया था? –