लिए काम नहीं करते मैं नवीनतम उपलब्ध जीसीसी रिपोजिटरी से निर्माण का उपयोग कर रहा हूँ। मैंने इसका उपयोग करने का फैसला किया क्योंकि कुछ अतिरिक्त सी ++ 0 एक्स विशेषताएं। हालांकि अब मैं कुछ काम करने का अनुमान लगाता हूं - मैं आर-वैल्यू के माध्यम से मानचित्र में नया तत्व जोड़ना चाहता हूं। सरलीकृत कोड है, जो समस्या को दर्शाता है:आर-मूल्य आवेषण unordered_map
#include <tr1/unordered_map>
class X
{
public:
X (void) { /* ... */ };
X (const X& x) = delete;
X (X&& x) { /* ... */ };
};
int main (void)
{
std::tr1::unordered_map<int, X> map;
// using std::tr1::unordered_map<int, X>::value_type didn't help too
std::pair<int, X> value (1, X());
map.insert (std::move (value));
}
ध्यान दें, कि जब int
कोड संकलित करता है तथा काम ठीक तरह कुछ आदिम प्रकार के साथ X
वर्ग की जगह।
मेरी उत्पादन कोड कक्षा में एक्स के लिए इसी भी प्रतिलिपि निर्माता नहीं है।
त्रुटि संदेश (सभी टेम्पलेट से संबंधित त्रुटियों की तरह) है लंबी और अपठनीय और मुझे यकीन है कि अगर यह अच्छा विचार इसे यहाँ डाल करने के लिए है नहीं कर रहा हूँ। अगर आपको त्रुटि संदेश चाहिए तो मुझे सूचित करें, इसलिए मैं इस प्रश्न को अपडेट कर दूंगा। संदेश के अंतिम भाग दिलचस्प है:
(...)
/usr/include/c++/trunk/ext/new_allocator.h:106:9: error: use of deleted function ‘constexpr std::pair<_T1, _T2>::pair(const std::pair<_T1, _T2>&) [with _T1 = const int, _T2 = X, std::pair<_T1, _T2> = std::pair<const int, X>]’
In file included from /usr/include/c++/trunk/utility:71:0,
from /usr/include/c++/trunk/tr1/unordered_map:34,
from kod.cpp:1:
/usr/include/c++/trunk/bits/stl_pair.h:110:17: error: ‘constexpr std::pair<_T1, _T2>::pair(const std::pair<_T1, _T2>&) [with _T1 = const int, _T2 = X, std::pair<_T1, _T2> = std::pair<const int, X>]’ is implicitly deleted because the default definition would be ill-formed:
/usr/include/c++/trunk/bits/stl_pair.h:110:17: error: use of deleted function ‘X::X(const X&)’
इसके अलावा इस, काम करना चाहिए क्योंकि इसी तरह के बग पहले से ही [C++0x] Implement emplace* in associative and unordered containers तय हुई थी।
शायद मैं कुछ गलत कर रहा हूं? मैं यह सुनिश्चित करना चाहता हूं कि यह रिपोर्ट करने से पहले जीसीसी या libstdC++ बग है।
लापता आर-मूल्य संगत 'सम्मिलित करें' विधि अब अप्रकाशित जीसीसी 4.6.0 में उपलब्ध है। – Goofy