N3059 में मुझे के टुकड़े के निर्माण जोड़े (और टुपल्स) का विवरण मिला (और यह नए मानक में है)।सी ++ 11 उपयोग-केस जोड़ी और tuple के piecewise_construct के लिए?
लेकिन मुझे नहीं पता कि मुझे इसका उपयोग कब करना चाहिए। मुझे और गैर-प्रतिलिपि योग्य इकाइयों के बारे में चर्चाएं मिलीं, लेकिन जब मैंने इसे आजमाया, तो मैं एक ऐसा केस नहीं बना सका जहां मैं piecewiese_construct
की आवश्यकता हो या प्रदर्शन लाभ देख सकूं।
उदाहरण। मैंने सोचा कि मैं एक वर्ग जो गैर copyable है की जरूरत है, लेकिन movebale (अग्रेषित करने के लिए आवश्यक):
struct NoCopy {
NoCopy(int, int) {};
NoCopy(const NoCopy&) = delete; // no copy
NoCopy& operator=(const NoCopy&) = delete; // no assign
NoCopy(NoCopy&&) {}; // please move
NoCopy& operator=(NoCopy&&) {}; // please move-assign
};
मैं तो तरह-की उम्मीद है कि मानक जोड़ी-निर्माण विफल हो जाएगा:
pair<NoCopy,NoCopy> x{ NoCopy{1,2}, NoCopy{2,3} }; // fine!
लेकिन ऐसा नहीं हुआ। दरअसल, वही है जो मैं वैसे भी चाहता था, क्योंकि "चारों ओर घूमना" बल्कि फिर इसे हर जगह stdlib में कॉपी करना, यह होना चाहिए।
pair<NoCopy,NoCopy> y(
piecewise_construct,
forward_as_tuple(1,2),
forward_as_tuple(2,3)
); // also fine
- तो, क्या एक USECASE है:
इस प्रकार, मैं कोई कारण नहीं क्यों मैं इस, या ऐसा किया है चाहिए?
- कैसे और कब क्या मैं
piecewise_construct
का उपयोग करता हूं?
चाल निर्माता अक्षम करने भी कोशिश करें। –