might've borked expected
parent
92300bc6a2
commit
644f426843
|
@ -1,6 +1,6 @@
|
||||||
cmake_minimum_required(VERSION 3.20)
|
cmake_minimum_required(VERSION 3.20)
|
||||||
include(cmake/color.cmake)
|
include(cmake/color.cmake)
|
||||||
set(BLT_VERSION 0.18.29)
|
set(BLT_VERSION 0.18.30)
|
||||||
set(BLT_TEST_VERSION 0.0.1)
|
set(BLT_TEST_VERSION 0.0.1)
|
||||||
|
|
||||||
set(BLT_TARGET BLT)
|
set(BLT_TARGET BLT)
|
||||||
|
|
|
@ -113,7 +113,7 @@ namespace blt
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename T, typename E, bool = std::is_copy_constructible_v<T>>
|
template<typename T, typename E, bool = std::is_copy_constructible_v<T>, bool = std::is_default_constructible_v<T>>
|
||||||
class expected
|
class expected
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
|
@ -131,10 +131,6 @@ namespace blt
|
||||||
std::is_constructible_v<unexpected<E>, expected<U, G>&> || std::is_constructible_v<unexpected<E>, expected<U, G>> ||
|
std::is_constructible_v<unexpected<E>, expected<U, G>&> || std::is_constructible_v<unexpected<E>, expected<U, G>> ||
|
||||||
std::is_constructible_v<unexpected<E>, const expected<U, G>&> || std::is_constructible_v<unexpected<E>, const expected<U, G>>;
|
std::is_constructible_v<unexpected<E>, const expected<U, G>&> || std::is_constructible_v<unexpected<E>, const expected<U, G>>;
|
||||||
public:
|
public:
|
||||||
template<typename std::enable_if_t<std::is_default_constructible_v<T>, bool> = true>
|
|
||||||
constexpr expected() noexcept: v(T())
|
|
||||||
{}
|
|
||||||
|
|
||||||
// constexpr expected(const expected& copy) = delete;
|
// constexpr expected(const expected& copy) = delete;
|
||||||
constexpr expected(const expected<T, E, true>& copy): expected<T, E, true>::v(copy.v)
|
constexpr expected(const expected<T, E, true>& copy): expected<T, E, true>::v(copy.v)
|
||||||
{}
|
{}
|
||||||
|
@ -371,10 +367,34 @@ namespace blt
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename T, typename E>
|
template<typename T, typename E>
|
||||||
class expected<T, E, false> : public expected<T, E, true>
|
class expected<T, E, true, true> : public expected<T, E, true, false>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
using expected<T, E, true>::expected;
|
using expected<T, E, true, false>::expected;
|
||||||
|
|
||||||
|
constexpr expected() noexcept: expected<T, E, std::is_copy_constructible_v<T>, false>(T())
|
||||||
|
{}
|
||||||
|
};
|
||||||
|
|
||||||
|
template<typename T, typename E>
|
||||||
|
class expected<T, E, false, true> : public expected<T, E, true, false>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
using expected<T, E, true, false>::expected;
|
||||||
|
|
||||||
|
constexpr expected() noexcept: expected<T, E, std::is_copy_constructible_v<T>, false>(T())
|
||||||
|
{}
|
||||||
|
|
||||||
|
constexpr expected(const expected<T, E, false>& copy) = delete;
|
||||||
|
|
||||||
|
expected& operator=(const expected& copy) = delete;
|
||||||
|
};
|
||||||
|
|
||||||
|
template<typename T, typename E>
|
||||||
|
class expected<T, E, false, false> : public expected<T, E, true, false>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
using expected<T, E, true, false>::expected;
|
||||||
|
|
||||||
constexpr expected(const expected<T, E, false>& copy) = delete;
|
constexpr expected(const expected<T, E, false>& copy) = delete;
|
||||||
|
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit d88c5e15079047777b418132ece5879e7c9aaa2b
|
Subproject commit 8a889d3699b3c09ade435641fb034427f3fd12b6
|
Loading…
Reference in New Issue