fix(templates): add constexpr specifier to TTuple's lifecycle functions
This commit is contained in:
parent
058f07fedc
commit
246965af79
@ -219,20 +219,20 @@ protected:
|
|||||||
TTupleImpl() = default;
|
TTupleImpl() = default;
|
||||||
|
|
||||||
template <typename... ArgTypes>
|
template <typename... ArgTypes>
|
||||||
explicit TTupleImpl(FForwardingConstructor, ArgTypes&&... Args)
|
constexpr explicit TTupleImpl(FForwardingConstructor, ArgTypes&&... Args)
|
||||||
: TTupleBasicElement<Ts, Indices>(Forward<ArgTypes>(Args))...
|
: TTupleBasicElement<Ts, Indices>(Forward<ArgTypes>(Args))...
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
template <typename TupleType>
|
template <typename TupleType>
|
||||||
explicit TTupleImpl(FOtherTupleConstructor, TupleType&& InValue)
|
constexpr explicit TTupleImpl(FOtherTupleConstructor, TupleType&& InValue)
|
||||||
: TTupleBasicElement<Ts, Indices>(Forward<TupleType>(InValue).template GetValue<Indices>())...
|
: TTupleBasicElement<Ts, Indices>(Forward<TupleType>(InValue).template GetValue<Indices>())...
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
TTupleImpl(const TTupleImpl&) = default;
|
constexpr TTupleImpl(const TTupleImpl&) = default;
|
||||||
TTupleImpl(TTupleImpl&&) = default;
|
constexpr TTupleImpl(TTupleImpl&&) = default;
|
||||||
|
|
||||||
TTupleImpl& operator=(const TTupleImpl&) = default;
|
constexpr TTupleImpl& operator=(const TTupleImpl&) = default;
|
||||||
TTupleImpl& operator=(TTupleImpl&&) = default;
|
constexpr TTupleImpl& operator=(TTupleImpl&&) = default;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -310,7 +310,7 @@ private:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
TTuple() = default;
|
constexpr TTuple() = default;
|
||||||
|
|
||||||
template <typename... ArgTypes> requires (sizeof...(Ts) >= 1 && sizeof...(ArgTypes) == sizeof...(Ts))
|
template <typename... ArgTypes> requires (sizeof...(Ts) >= 1 && sizeof...(ArgTypes) == sizeof...(Ts))
|
||||||
&& (true && ... && CConstructibleFrom<Ts, ArgTypes&&>)
|
&& (true && ... && CConstructibleFrom<Ts, ArgTypes&&>)
|
||||||
@ -332,8 +332,8 @@ public:
|
|||||||
: Super(NAMESPACE_PRIVATE::OtherTupleConstructor, MoveTemp(InValue))
|
: Super(NAMESPACE_PRIVATE::OtherTupleConstructor, MoveTemp(InValue))
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
TTuple(const TTuple&) = default;
|
constexpr TTuple(const TTuple&) = default;
|
||||||
TTuple(TTuple&&) = default;
|
constexpr TTuple(TTuple&&) = default;
|
||||||
|
|
||||||
template <typename... OtherTypes> requires (sizeof...(OtherTypes) == sizeof...(Ts)
|
template <typename... OtherTypes> requires (sizeof...(OtherTypes) == sizeof...(Ts)
|
||||||
&& (true && ... && CAssignableFrom<Ts&, const OtherTypes&>))
|
&& (true && ... && CAssignableFrom<Ts&, const OtherTypes&>))
|
||||||
@ -351,8 +351,8 @@ public:
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
TTuple& operator=(const TTuple&) = default;
|
constexpr TTuple& operator=(const TTuple&) = default;
|
||||||
TTuple& operator=(TTuple&&) = default;
|
constexpr TTuple& operator=(TTuple&&) = default;
|
||||||
|
|
||||||
template <size_t I> requires (I < sizeof...(Ts)) constexpr decltype(auto) GetValue() & { return static_cast< NAMESPACE_PRIVATE::TTupleBasicElement<TTupleElement<I, TTuple<Ts...>>, I>& >(*this).GetValue(); }
|
template <size_t I> requires (I < sizeof...(Ts)) constexpr decltype(auto) GetValue() & { return static_cast< NAMESPACE_PRIVATE::TTupleBasicElement<TTupleElement<I, TTuple<Ts...>>, I>& >(*this).GetValue(); }
|
||||||
template <size_t I> requires (I < sizeof...(Ts)) constexpr decltype(auto) GetValue() const & { return static_cast<const NAMESPACE_PRIVATE::TTupleBasicElement<TTupleElement<I, TTuple<Ts...>>, I>& >(*this).GetValue(); }
|
template <size_t I> requires (I < sizeof...(Ts)) constexpr decltype(auto) GetValue() const & { return static_cast<const NAMESPACE_PRIVATE::TTupleBasicElement<TTupleElement<I, TTuple<Ts...>>, I>& >(*this).GetValue(); }
|
||||||
|
Loading…
Reference in New Issue
Block a user