fast forward variant lib

This commit is contained in:
Dennis Luxen 2014-07-08 10:45:43 +02:00
parent a5e99a95a3
commit cdd72c7e56

View File

@ -487,6 +487,8 @@ private:
} // namespace detail } // namespace detail
struct no_init {};
template<typename... Types> template<typename... Types>
class variant class variant
{ {
@ -503,12 +505,16 @@ private:
public: public:
VARIANT_INLINE variant() VARIANT_INLINE variant()
: type_index(sizeof...(Types) - 1) : type_index(sizeof...(Types) - 1)
{ {
new (&data) typename detail::select_type<0, Types...>::type(); new (&data) typename detail::select_type<0, Types...>::type();
} }
VARIANT_INLINE variant(no_init)
: type_index(detail::invalid_value) {}
template <typename T, class = typename std::enable_if< template <typename T, class = typename std::enable_if<
detail::is_valid_type<T, Types...>::value>::type> detail::is_valid_type<T, Types...>::value>::type>
VARIANT_INLINE explicit variant(T const& val) noexcept VARIANT_INLINE explicit variant(T const& val) noexcept