मैं boost::optional
सदस्य चर के साथ कक्षा में एक डिफ़ॉल्ट चालक कन्स्ट्रक्टर को परिभाषित करने का प्रयास कर रहा हूं।क्या कोई बढ़ावा :: वैकल्पिक स्थानांतरित करना संभव है?
#include <boost/optional.hpp>
#include <utility>
#include <vector>
struct bar {std::vector<int> vec;};
struct foo {
foo() = default;
foo(foo&&) = default;
boost::optional<bar> hello;
};
int main() {
foo a;
foo b(std::move(a));
}
मेरा कंपाइलर दोनों चाल semantics और डिफ़ॉल्ट चाल चालकों का समर्थन करता है, लेकिन मैं इसे काम करने के लिए नहीं मिल सकता है।
% clang++ foo.cc -std=c++11 -stdlib=libc++ foo.cc:15:7: error: call to deleted constructor of 'foo' foo b(std::move(a)); ^~~~~~~~~~~~~ foo.cc:9:3: note: function has been explicitly marked deleted here foo(foo&&) = default; ^ 1 error generated.
वहाँ बूस्ट के स्रोत कोड को संशोधित के बिना एक boost::optional
स्थानांतरित करने के लिए एक तरीका है? या जब तक बूस्ट आगे बढ़ने का समर्थन करता है तब तक मुझे इंतजार करना चाहिए?
मुझे अतीत में boost::any
के साथ एक ही समस्या थी।
#boost में से किसी ने मुझे यह इंगित किया: https://svn.boost.org/trac/boost/ticket/1841 –