Core: Tuples now Moveable if all elements moveable (thanks a lot kohait00!)

git-svn-id: svn://ultimatepp.org/upp/trunk@2795 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
cxl 2010-10-19 13:28:13 +00:00
parent 3ed7692559
commit 10e9ae82aa

View file

@ -17,6 +17,13 @@ struct Tuple2 {
String ToString() const { return String().Cat() << '(' << a << ", " << b << ')'; }
};
template<typename A, typename B>
inline void AssertMoveable0(Tuple2<A, B> *)
{
AssertMoveable<A>();
AssertMoveable<B>();
}
template <typename A, typename B>
inline Tuple2<A, B> MakeTuple(const A& a, const B& b)
{
@ -46,6 +53,14 @@ struct Tuple3 {
String ToString() const { return String().Cat() << '(' << a << ", " << b << ", " << c << ')'; }
};
template<typename A, typename B, typename C>
inline void AssertMoveable0(Tuple3<A, B, C> *)
{
AssertMoveable<A>();
AssertMoveable<B>();
AssertMoveable<C>();
}
template <typename A, typename B, typename C>
inline Tuple3<A, B, C> MakeTuple(const A& a, const B& b, const C& c)
{
@ -77,6 +92,15 @@ struct Tuple4 {
String ToString() const { return String().Cat() << '(' << a << ", " << b << ", " << c << ", " << d << ')'; }
};
template<typename A, typename B, typename C, typename D>
inline void AssertMoveable0(Tuple4<A, B, C, D> *)
{
AssertMoveable<A>();
AssertMoveable<B>();
AssertMoveable<C>();
AssertMoveable<D>();
}
template <typename A, typename B, typename C, typename D>
inline Tuple4<A, B, C, D> MakeTuple(const A& a, const B& b, const C& c, const D& d)
{