|
template<bool B, class T , class F > |
using | tl::detail::conditional_t = typename std::conditional< B, T, F >::type |
|
template<class T > |
using | tl::detail::decay_t = typename std::decay< T >::type |
|
template<class T , class... U> |
using | tl::detail::disable_if_ret_void = enable_if_t<!returns_void< T &&, U... >::value > |
|
template<class T , class U > |
using | tl::detail::enable_assign_forward = detail::enable_if_t< !std::is_same< optional< T >, detail::decay_t< U > >::value &&!detail::conjunction< std::is_scalar< T >, std::is_same< T, detail::decay_t< U > >>::value &&std::is_constructible< T, U >::value &&std::is_assignable< T &, U >::value > |
|
template<class T , class U , class Other > |
using | tl::detail::enable_assign_from_other = detail::enable_if_t< std::is_constructible< T, Other >::value &&std::is_assignable< T &, Other >::value &&!std::is_constructible< T, optional< U > & >::value &&!std::is_constructible< T, optional< U > && >::value &&!std::is_constructible< T, const optional< U > & >::value &&!std::is_constructible< T, const optional< U > && >::value &&!std::is_convertible< optional< U > &, T >::value &&!std::is_convertible< optional< U > &&, T >::value &&!std::is_convertible< const optional< U > &, T >::value &&!std::is_convertible< const optional< U > &&, T >::value &&!std::is_assignable< T &, optional< U > & >::value &&!std::is_assignable< T &, optional< U > && >::value &&!std::is_assignable< T &, const optional< U > & >::value &&!std::is_assignable< T &, const optional< U > && >::value > |
|
template<class T , class U > |
using | tl::detail::enable_forward_value = detail::enable_if_t< std::is_constructible< T, U && >::value &&!std::is_same< detail::decay_t< U >, in_place_t >::value &&!std::is_same< optional< T >, detail::decay_t< U > >::value > |
|
template<class T , class U , class Other > |
using | tl::detail::enable_from_other = detail::enable_if_t< std::is_constructible< T, Other >::value &&!std::is_constructible< T, optional< U > & >::value &&!std::is_constructible< T, optional< U > && >::value &&!std::is_constructible< T, const optional< U > & >::value &&!std::is_constructible< T, const optional< U > && >::value &&!std::is_convertible< optional< U > &, T >::value &&!std::is_convertible< optional< U > &&, T >::value &&!std::is_convertible< const optional< U > &, T >::value &&!std::is_convertible< const optional< U > &&, T >::value > |
|
template<class T , class... U> |
using | tl::detail::enable_if_ret_void = enable_if_t< returns_void< T &&, U... >::value > |
|
template<bool E, class T = void> |
using | tl::detail::enable_if_t = typename std::enable_if< E, T >::type |
|
template<class U > |
using | tl::detail::fixup_void = conditional_t< std::is_void< U >::value, monostate, U > |
|
template<class F , class U , class = invoke_result_t<F, U>> |
using | tl::detail::get_map_return = optional< fixup_void< invoke_result_t< F, U > >> |
|
template<class F , class... Us> |
using | tl::detail::invoke_result = invoke_result_impl< F, void, Us... > |
|
template<class F , class... Us> |
using | tl::detail::invoke_result_t = typename invoke_result< F, Us... >::type |
|
template<class T > |
using | tl::detail::is_optional = is_optional_impl< decay_t< T > > |
|
template<class T > |
using | tl::detail::remove_const_t = typename std::remove_const< T >::type |
|
template<class T > |
using | tl::detail::remove_reference_t = typename std::remove_reference< T >::type |
|
template<class F , class... U> |
using | tl::detail::returns_void = returns_void_impl< F, void, U... > |
|
template<class... Ts> |
using | tl::detail::void_t = typename voider< Ts... >::type |
|
|
template<class , class > |
std::false_type | tl::detail::swap_adl_tests::can_swap (...) noexcept(false) |
|
template<class T , class U , class = decltype(swap(std::declval<T &>(), std::declval<U &>()))> |
std::true_type | tl::detail::swap_adl_tests::can_swap (int) noexcept(noexcept(swap(std::declval< T & >(), std::declval< U & >()))) |
|
template<typename Fn , typename... Args, typename = enable_if_t<!std::is_member_pointer<decay_t<Fn>>::value>> |
constexpr auto | tl::detail::invoke (Fn &&f, Args &&... args) noexcept(noexcept(std::forward< Fn >(f)(std::forward< Args >(args)...))) -> decltype(std::forward< Fn >(f)(std::forward< Args >(args)...)) |
|
template<typename Fn , typename... Args, typename = enable_if_t<std::is_member_pointer<decay_t<Fn>>::value>, int = 0> |
constexpr auto | tl::detail::invoke (Fn &&f, Args &&... args) noexcept(noexcept(std::mem_fn(f)(std::forward< Args >(args)...))) -> decltype(std::mem_fn(f)(std::forward< Args >(args)...)) |
|
template<class T , class... Args> |
constexpr optional< T > | tl::make_optional (Args &&... args) |
|
template<class T , class U , class... Args> |
constexpr optional< T > | tl::make_optional (std::initializer_list< U > il, Args &&... args) |
|
template<class T = detail::i_am_secret, class U , class Ret = detail::conditional_t<std::is_same<T, detail::i_am_secret>::value, detail::decay_t<U>, T>> |
constexpr optional< Ret > | tl::make_optional (U &&v) |
|
template<class T , class U > |
constexpr bool | tl::operator!= (const optional< T > &lhs, const optional< U > &rhs) |
|
template<class T , class U > |
constexpr bool | tl::operator!= (const optional< T > &lhs, const U &rhs) |
|
template<class T > |
constexpr bool | tl::operator!= (const optional< T > &lhs, nullopt_t) noexcept |
|
template<class T , class U > |
constexpr bool | tl::operator!= (const U &lhs, const optional< T > &rhs) |
|
template<class T > |
constexpr bool | tl::operator!= (nullopt_t, const optional< T > &rhs) noexcept |
|
template<class T > |
constexpr bool | tl::operator< (const optional< T > &, nullopt_t) noexcept |
|
template<class T , class U > |
constexpr bool | tl::operator< (const optional< T > &lhs, const optional< U > &rhs) |
|
template<class T , class U > |
constexpr bool | tl::operator< (const optional< T > &lhs, const U &rhs) |
|
template<class T , class U > |
constexpr bool | tl::operator< (const U &lhs, const optional< T > &rhs) |
|
template<class T > |
constexpr bool | tl::operator< (nullopt_t, const optional< T > &rhs) noexcept |
|
template<class T , class U > |
constexpr bool | tl::operator<= (const optional< T > &lhs, const optional< U > &rhs) |
|
template<class T , class U > |
constexpr bool | tl::operator<= (const optional< T > &lhs, const U &rhs) |
|
template<class T > |
constexpr bool | tl::operator<= (const optional< T > &lhs, nullopt_t) noexcept |
|
template<class T , class U > |
constexpr bool | tl::operator<= (const U &lhs, const optional< T > &rhs) |
|
template<class T > |
constexpr bool | tl::operator<= (nullopt_t, const optional< T > &) noexcept |
|
template<class T , class U > |
constexpr bool | tl::operator== (const optional< T > &lhs, const optional< U > &rhs) |
| Compares two optional objects. More...
|
|
template<class T , class U > |
constexpr bool | tl::operator== (const optional< T > &lhs, const U &rhs) |
| Compares the optional with a value. More...
|
|
template<class T > |
constexpr bool | tl::operator== (const optional< T > &lhs, nullopt_t) noexcept |
| Compares an optional to a nullopt More...
|
|
template<class T , class U > |
constexpr bool | tl::operator== (const U &lhs, const optional< T > &rhs) |
|
template<class T > |
constexpr bool | tl::operator== (nullopt_t, const optional< T > &rhs) noexcept |
|
template<class T , class U > |
constexpr bool | tl::operator> (const optional< T > &lhs, const optional< U > &rhs) |
|
template<class T , class U > |
constexpr bool | tl::operator> (const optional< T > &lhs, const U &rhs) |
|
template<class T > |
constexpr bool | tl::operator> (const optional< T > &lhs, nullopt_t) noexcept |
|
template<class T , class U > |
constexpr bool | tl::operator> (const U &lhs, const optional< T > &rhs) |
|
template<class T > |
constexpr bool | tl::operator> (nullopt_t, const optional< T > &) noexcept |
|
template<class T > |
constexpr bool | tl::operator>= (const optional< T > &, nullopt_t) noexcept |
|
template<class T , class U > |
constexpr bool | tl::operator>= (const optional< T > &lhs, const optional< U > &rhs) |
|
template<class T , class U > |
constexpr bool | tl::operator>= (const optional< T > &lhs, const U &rhs) |
|
template<class T , class U > |
constexpr bool | tl::operator>= (const U &lhs, const optional< T > &rhs) |
|
template<class T > |
constexpr bool | tl::operator>= (nullopt_t, const optional< T > &rhs) noexcept |
|
template<class Opt , class F , class Ret = decltype(detail::invoke(std::declval<F>(), *std::declval<Opt>())), detail::enable_if_t< std::is_void< Ret >::value > * = nullptr> |
auto | tl::detail::optional_map_impl (Opt &&opt, F &&f) -> optional< monostate > |
|
template<class Opt , class F , class Ret = decltype(detail::invoke(std::declval<F>(), *std::declval<Opt>())), detail::enable_if_t<!std::is_void< Ret >::value > * = nullptr> |
constexpr auto | tl::detail::optional_map_impl (Opt &&opt, F &&f) -> optional< Ret > |
|
template<class T , detail::enable_if_t< std::is_move_constructible< T >::value > * = nullptr, detail::enable_if_t< detail::is_swappable< T >::value > * = nullptr> |
void | tl::swap (optional< T > &lhs, optional< T > &rhs) noexcept(noexcept(lhs.swap(rhs))) |
|
template<class T > |
tag | tl::detail::swap_adl_tests::swap (T &, T &) |
|
template<class T , std::size_t N> |
tag | tl::detail::swap_adl_tests::swap (T(&a)[N], T(&b)[N]) |
|
template<class , class > |
std::false_type | tl::detail::swap_adl_tests::uses_std (...) |
|