Add emplace test

This commit is contained in:
Simon Brand
2018-07-11 14:32:25 +01:00
parent 5dd9ed7e2c
commit aa74eb709f
3 changed files with 16 additions and 0 deletions

View File

@ -23,6 +23,7 @@ if(OPTIONAL_ENABLE_TESTS)
${CMAKE_CURRENT_SOURCE_DIR}/tests/relops.cpp
${CMAKE_CURRENT_SOURCE_DIR}/tests/observers.cpp
${CMAKE_CURRENT_SOURCE_DIR}/tests/extensions.cpp
${CMAKE_CURRENT_SOURCE_DIR}/tests/emplace.cpp
${CMAKE_CURRENT_SOURCE_DIR}/tests/constexpr.cpp
${CMAKE_CURRENT_SOURCE_DIR}/tests/constructors.cpp
${CMAKE_CURRENT_SOURCE_DIR}/tests/assignment.cpp

13
tests/emplace.cpp Normal file
View File

@ -0,0 +1,13 @@
#include "catch.hpp"
#include "optional.hpp"
#include <utility>
#include <tuple>
TEST_CASE("Emplace", "[emplace]") {
tl::optional<std::pair<std::pair<int,int>, std::pair<double, double>>> i;
i.emplace(std::piecewise_construct, std::make_tuple(0,2), std::make_tuple(3,4));
REQUIRE(i->first.first == 0);
REQUIRE(i->first.second == 2);
REQUIRE(i->second.first == 3);
REQUIRE(i->second.second == 4);
}

View File

@ -1258,6 +1258,7 @@ public:
*this = nullopt;
this->construct(std::forward<Args>(args)...);
return value();
}
/// \group emplace
@ -1269,6 +1270,7 @@ public:
emplace(std::initializer_list<U> il, Args &&... args) {
*this = nullopt;
this->construct(il, std::forward<Args>(args)...);
return value();
}
/// Swaps this optional with the other.