示例#1
0
		optional& operator=(T* value) {
			if (valid())
				unchecked_destroy();
			if (value == nullptr) {
				return *this;
			}
			unchecked_place(value);
			return *this;
		}
示例#2
0
		optional& operator=(optional&& that) {
			if (std::addressof(that) == this)
				return *this;
			if (valid() && that.valid())
				**this = std::move(*that);
			else if (valid())
				unchecked_destroy();
			else if (that.valid())
				unchecked_place(std::move(*that));
			else
				present = false;

			return *this;
		}
示例#3
0
文件: main.cpp 项目: CCJY/coliru
		optional( T&& t ) {
			unchecked_place( std::move( t ) );
		}
示例#4
0
文件: main.cpp 项目: CCJY/coliru
		optional( const T& t ) {
			unchecked_place( t );
		}
示例#5
0
文件: main.cpp 项目: CCJY/coliru
		explicit optional( in_place_t, Tn&&... argn ) {
			unchecked_place( std::forward<Tn>( argn )... );
		}
示例#6
0
文件: main.cpp 项目: CCJY/coliru
		void place( Tn&&... argn ) {
			assert( !present );
			unchecked_place( std::forward<Tn>( argn )... );
		}
示例#7
0
		optional& operator=(const T& right) {
			if (valid())
				unchecked_destroy();
			unchecked_place(right);
			return *this;
		}
示例#8
0
		optional& operator=(T&& right) {
			if (valid())
				unchecked_destroy();
			unchecked_place(std::move(right));
			return *this;
		}
示例#9
0
		optional(optional&& that) : present(false) {
			if (that.valid())
				unchecked_place(std::move(*that));
		}
示例#10
0
		optional(const optional& that) : present(false) {
			if (that.valid())
				unchecked_place(*that);
		}
示例#11
0
		optional& operator=(T& value) {
			if (valid())
				unchecked_destroy();
			unchecked_place(value);
			return *this;
		}
示例#12
0
		void place(Tn&&... argn) {
			assert(!valid());
			unchecked_place(std::forward<Tn>(argn)...);
		}