diff --git a/optional.hpp b/optional.hpp index ec1ad04..9be3f72 100644 --- a/optional.hpp +++ b/optional.hpp @@ -85,19 +85,17 @@ template struct is_optional_impl> : std::true_type {}; template using is_optional = is_optional_impl>; // https://stackoverflow.com/questions/38288042/c11-14-invoke-workaround -template < - typename Fn, typename... Args, - typename = enable_if_t>{}>, - int = 0> +template >{}>, + int = 0> constexpr auto invoke(Fn &&f, Args &&... args) noexcept( noexcept(std::mem_fn(f)(std::forward(args)...))) -> decltype(std::mem_fn(f)(std::forward(args)...)) { return std::mem_fn(f)(std::forward(args)...); } -template < - typename Fn, typename... Args, - typename = enable_if_t>{}>> +template >{}>> constexpr auto invoke(Fn &&f, Args &&... args) noexcept( noexcept(std::forward(f)(std::forward(args)...))) -> decltype(std::forward(f)(std::forward(args)...)) { @@ -493,10 +491,10 @@ struct optional_storage_base { }; template struct optional_storage_base { - constexpr optional_storage_base() noexcept : m_dummy(), m_has_value(false) {} + TL_OPTIONAL_MSVC_2015_CONSTEXPR optional_storage_base() noexcept : m_dummy(), m_has_value(false) {} template - constexpr optional_storage_base(in_place_t, U &&... u) noexcept + TL_OPTIONAL_MSVC_2015_CONSTEXPR optional_storage_base(in_place_t, U &&... u) noexcept : m_value(std::forward(u)...), m_has_value(true) {} ~optional_storage_base() = default;