optional emplacement.

This commit is contained in:
Kelvin Sherlock 2017-01-13 00:33:21 -05:00
parent 61c3b82aaf
commit 6d1e684f8d

View File

@ -56,6 +56,10 @@ public:
} }
~optional() {
reset();
}
template< class U = T > template< class U = T >
optional& operator=( U&& value ) { optional& operator=( U&& value ) {
@ -82,9 +86,11 @@ public:
return *this; return *this;
} }
template< class... Args >
~optional() { void emplace( Args&&... args ) {
reset(); reset();
new(std::addressof(_data)) T(std::forward<Args>(args)...);
_engaged = true;
} }