blob: fdbe64307ddffc015708d1d33df808d91b67e6e7 [file]
//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------
#pragma once
namespace regex
{
struct Nothing { };
template<typename T0, typename T1, typename T2 = Nothing, typename T3 = Nothing>
class Tuple
{
T0 first;
T1 second;
T2 third;
T3 forth;
public:
Tuple(T0 first, T1 second)
: first(first), second(second)
{
CompileAssert(sizeof(T2)==sizeof(Nothing));
CompileAssert(sizeof(T3)==sizeof(Nothing));
}
Tuple(T0 first, T1 second, T2 third)
: first(first), second(second), third(third)
{
CompileAssert(sizeof(T3)==sizeof(Nothing));
}
T0 First() const
{
return first;
}
T1 Second() const
{
return second;
}
T2 Third() const
{
CompileAssert(sizeof(T2)!=sizeof(Nothing));
return third;
}
T3 Forth() const
{
CompileAssert(sizeof(T3)!=sizeof(Nothing));
return forth;
}
};
}