मैं निम्नलिखित संकलक त्रुटि से हैरान हूं:'struct प्रारंभकर्ता में अतिरिक्त तत्वों' के साथ त्रुटि सी ++ 11 वर्दी प्रारंभ
template <typename T>
struct A
{
A(T t): t_{t} {}
T t_;
};
struct S
{
};
int main()
{
A<S> s{S{}};
}
त्रुटि (बजना के साथ):
test.cpp:4:16: error: excess elements in struct initializer
A(T t): t_{t} {}
^
test.cpp:15:10: note: in instantiation of member function 'A<S>::A' requested here
A<S> s{S{}};
^
जीसीसी एक समान त्रुटि देता है।
से t_
की प्रतिलिपि बनाने की कोशिश करने के लिए अभिव्यक्ति की अपेक्षा करेगा। चूंकि S
में एक पूर्ण रूप से जेनरेट की गई प्रतिलिपि निर्माता है, इसलिए मैं यह एक समस्या होने की उम्मीद नहीं करता।
कोई बता सकता है कि यहां क्या हो रहा है?
'समान प्रारंभिक वाक्यविन्यास को इन कारणों से बचा जाना चाहिए' ... और कई अन्य कारणों से 'एस' को संशोधित करते समय अर्थशास्त्र बदलना। – ipc
@ipc: मैं अब तक नहीं जाऊंगा, लेकिन तथ्य यह है कि यह कभी-कभी मुश्किल हो सकता है :) –
तब इतना समान प्रारंभिक वाक्यविन्यास नहीं है? – zahir