//------------------------------------------------------------------------------
struct A
{
A(){}
A(A&&){}
A& operator=(A&&){return *this;}
void operator()(){}
private:
A(const A&);
A& operator=(const A&);
int x;
};
//------------------------------------------------------------------------------
int main()
{
A a;
std::function<void()> func(std::move(a));
}
'ए :: ए': निजी सदस्य कक्षा में 'ए'क्यों C++ 11 एक noncopyable functor को std :: function में नहीं ले जा सकता है?
घोषित जब मैं संदर्भ या const
से कुछ पर कब्जा मैं एक गैर copyable लैम्ब्डा कर सकते हैं की तरह लगता है का उपयोग नहीं कर सकते हैं। हालांकि जब मैं ऐसा करता हूं तो यह वास्तव में std::function
को देने के लिए काम करता है।
एक [वर्कअराउंड] (https://gist.github.com/vmilea/5815777) के रूप में, आप std :: function और अपने functor के बीच एक प्रतिलिपि एडाप्टर डाल सकते हैं। एडाप्टर में एक डमी (मूव-ऑन-कॉपी) कॉपी कन्स्ट्रक्टर है और कॉपी होने पर फेंकता है। –