|
@@ -84,22 +84,22 @@ Triplet<T1, T2, T3> makeTriplet(const T1& t1, const T2& t2, const T3& t3)
|
|
|
return Triplet<T1, T2, T3>(t1, t2, t3);
|
|
|
}
|
|
|
|
|
|
-template<typename T1, typename T2, typename T3, size_t N>
|
|
|
+template<typename Triplet, size_t N>
|
|
|
struct TripletNthType;
|
|
|
|
|
|
-template<typename T1, typename T2, typename T3>
|
|
|
-struct TripletNthType<T1, T2, T3, 1> {
|
|
|
- typedef T1 type;
|
|
|
+template<typename Triplet>
|
|
|
+struct TripletNthType<Triplet, 1> {
|
|
|
+ typedef typename Triplet::first_type type;
|
|
|
};
|
|
|
|
|
|
-template<typename T1, typename T2, typename T3>
|
|
|
-struct TripletNthType<T1, T2, T3, 2> {
|
|
|
- typedef T2 type;
|
|
|
+template<typename Triplet>
|
|
|
+struct TripletNthType<Triplet, 2> {
|
|
|
+ typedef typename Triplet::second_type type;
|
|
|
};
|
|
|
|
|
|
-template<typename T1, typename T2, typename T3>
|
|
|
-struct TripletNthType<T1, T2, T3, 3> {
|
|
|
- typedef T3 type;
|
|
|
+template<typename Triplet>
|
|
|
+struct TripletNthType<Triplet, 3> {
|
|
|
+ typedef typename Triplet::third_type type;
|
|
|
};
|
|
|
|
|
|
template<size_t N>
|
|
@@ -135,13 +135,13 @@ struct TripletGet<3> {
|
|
|
template<size_t N1, size_t N2>
|
|
|
class Triplet2Pair {
|
|
|
public:
|
|
|
- template<typename T1, typename T2, typename T3>
|
|
|
- std::pair<typename TripletNthType<T1, T2, T3, N1>::type,
|
|
|
- typename TripletNthType<T1, T2, T3, N2>::type>
|
|
|
- operator()(const Triplet<T1, T2, T3>& tri) const
|
|
|
+ template<typename Triplet>
|
|
|
+ std::pair<typename TripletNthType<Triplet, N1>::type,
|
|
|
+ typename TripletNthType<Triplet, N2>::type>
|
|
|
+ operator()(const Triplet& tri) const
|
|
|
{
|
|
|
- return std::make_pair<typename TripletNthType<T1, T2, T3, N1>::type,
|
|
|
- typename TripletNthType<T1, T2, T3, N2>::type>
|
|
|
+ return std::make_pair<typename TripletNthType<Triplet, N1>::type,
|
|
|
+ typename TripletNthType<Triplet, N2>::type>
|
|
|
(TripletGet<N1>::get(tri), TripletGet<N2>::get(tri));
|
|
|
}
|
|
|
};
|