commit 2025-09-06 09:41 bug fix of ZftMakeTuple() in ZCppMain/ZMainHead.H

This commit is contained in:
2025-09-06 21:41:28 +09:00
parent 68c00e0569
commit 28b6010c51
2 changed files with 673 additions and 112 deletions

View File

@ -1233,6 +1233,10 @@ namespace ZNsMain
■ 이젠 ZtStTuple<int> 형태도 가능하다. ZftMakeTuple() 도 추가. - -2025-09-05 21:01 ■ 이젠 ZtStTuple<int> 형태도 가능하다. ZftMakeTuple() 도 추가. - -2025-09-05 21:01
■ RVO(Return Value Optimization) 로 인해 아래가 가능하다. -- 2025-09-06 21:23
int VariMy=0; ZtStTuple<int&> myt1 = ZftMakeTuple(ZftMCP(VariMy));
//////////////////////////////////////////////////////////////////////////////////////////*/ //////////////////////////////////////////////////////////////////////////////////////////*/
template< typename Type1 =void, typename Type2 =void, template< typename Type1 =void, typename Type2 =void,
@ -1250,9 +1254,7 @@ namespace ZNsMain
/*###########################################################################################*/ /*###########################################################################################*/
template< typename Type1 template<typename Type1> struct ZtStTuple<Type1>
>
struct ZtStTuple<Type1> ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
{ {
typedef ZNsMain::ZtCCheckRef<Type1> CCheckRef1 ; typedef ZNsMain::ZtCCheckRef<Type1> CCheckRef1 ;
typedef typename CCheckRef1::TypeData TypeData1 ; typedef typename CCheckRef1::TypeData TypeData1 ;
@ -1265,9 +1267,9 @@ namespace ZNsMain
{} {}
}; };
/*###########################################################################################*/ /*###########################################################################################*/
template< typename Type1, typename Type2 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// template
> < typename Type1, typename Type2 >
struct ZtStTuple<Type1, Type2> //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// struct ZtStTuple<Type1, Type2>
{ {
typedef ZNsMain::ZtCCheckRef<Type1> CCheckRef1 ; typedef ZNsMain::ZtCCheckRef<Type1> CCheckRef1 ;
typedef ZNsMain::ZtCCheckRef<Type2> CCheckRef2 ; typedef ZNsMain::ZtCCheckRef<Type2> CCheckRef2 ;
@ -1284,9 +1286,9 @@ namespace ZNsMain
{} {}
}; };
/*###########################################################################################*/ /*###########################################################################################*/
template< typename Type1, typename Type2, typename Type3 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// template
> < typename Type1, typename Type2, typename Type3 >
struct ZtStTuple<Type1, Type2, Type3> ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// struct ZtStTuple<Type1, Type2, Type3>
{ {
typedef ZNsMain::ZtCCheckRef<Type1> CCheckRef1 ; typedef ZNsMain::ZtCCheckRef<Type1> CCheckRef1 ;
typedef ZNsMain::ZtCCheckRef<Type2> CCheckRef2 ; typedef ZNsMain::ZtCCheckRef<Type2> CCheckRef2 ;
@ -1307,9 +1309,9 @@ namespace ZNsMain
{} {}
}; };
/*###########################################################################################*/ /*###########################################################################################*/
template< typename Type1, typename Type2, typename Type3, typename Type4 //////////////////////////////////////////////////////////////////////////////////////////////////////// template
> < typename Type1, typename Type2, typename Type3, typename Type4 >
struct ZtStTuple<Type1, Type2, Type3, Type4> ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// struct ZtStTuple<Type1, Type2, Type3, Type4>
{ {
typedef ZNsMain::ZtCCheckRef<Type1> CCheckRef1 ; typedef ZNsMain::ZtCCheckRef<Type1> CCheckRef1 ;
typedef ZNsMain::ZtCCheckRef<Type2> CCheckRef2 ; typedef ZNsMain::ZtCCheckRef<Type2> CCheckRef2 ;
@ -1333,9 +1335,11 @@ namespace ZNsMain
{} {}
}; };
/*###########################################################################################*/ /*###########################################################################################*/
template< typename Type1, typename Type2, typename Type3, typename Type4, typename Type5 //////////////////////////////////////////////////////////////////////////////////////// template
< typename Type1, typename Type2, typename Type3,
typename Type4, typename Type5
> >
struct ZtStTuple<Type1, Type2, Type3, Type4, Type5> /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// struct ZtStTuple<Type1, Type2, Type3, Type4, Type5>
{ {
typedef ZNsMain::ZtCCheckRef<Type1> CCheckRef1 ; typedef ZNsMain::ZtCCheckRef<Type1> CCheckRef1 ;
typedef ZNsMain::ZtCCheckRef<Type2> CCheckRef2 ; typedef ZNsMain::ZtCCheckRef<Type2> CCheckRef2 ;
@ -1362,9 +1366,11 @@ namespace ZNsMain
{} {}
}; };
/*###########################################################################################*/ /*###########################################################################################*/
template< typename Type1, typename Type2, typename Type3, typename Type4, typename Type5, typename Type6 //////////////////////////////////////////////////////////////////////// template
< typename Type1, typename Type2, typename Type3,
typename Type4, typename Type5, typename Type6
> >
struct ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6> //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// struct ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6>
{ {
typedef ZNsMain::ZtCCheckRef<Type1> CCheckRef1 ; typedef ZNsMain::ZtCCheckRef<Type1> CCheckRef1 ;
typedef ZNsMain::ZtCCheckRef<Type2> CCheckRef2 ; typedef ZNsMain::ZtCCheckRef<Type2> CCheckRef2 ;
@ -1380,11 +1386,14 @@ namespace ZNsMain
typedef typename CCheckRef5::TypeData TypeData5 ; typedef typename CCheckRef5::TypeData TypeData5 ;
typedef typename CCheckRef6::TypeData TypeData6 ; typedef typename CCheckRef6::TypeData TypeData6 ;
TypeData1 _1; TypeData2 _2; TypeData3 _3; TypeData4 _4; TypeData5 _5; TypeData6 _6; TypeData1 _1; TypeData2 _2; TypeData3 _3;
TypeData4 _4; TypeData5 _5; TypeData6 _6;
ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6>(){} ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6>(){}
ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6> ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6>
(Type1 _T1, Type2 _T2, Type3 _T3, Type4 _T4, Type5 _T5, Type6 _T6) : (
Type1 _T1, Type2 _T2, Type3 _T3, Type4 _T4, Type5 _T5, Type6 _T6
) :
_1(CCheckRef1::PassData(_T1)) _1(CCheckRef1::PassData(_T1))
, _2(CCheckRef2::PassData(_T2)) , _2(CCheckRef2::PassData(_T2))
, _3(CCheckRef3::PassData(_T3)) , _3(CCheckRef3::PassData(_T3))
@ -1394,9 +1403,11 @@ namespace ZNsMain
{} {}
}; };
/*###########################################################################################*/ /*###########################################################################################*/
template< typename Type1, typename Type2, typename Type3, typename Type4, typename Type5, typename Type6, typename Type7 //////////////////////////////////////////////////////// template
< typename Type1, typename Type2, typename Type3,
typename Type4, typename Type5, typename Type6, typename Type7
> >
struct ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6, Type7> ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// struct ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6, Type7>
{ {
typedef ZNsMain::ZtCCheckRef<Type1> CCheckRef1 ; typedef ZNsMain::ZtCCheckRef<Type1> CCheckRef1 ;
typedef ZNsMain::ZtCCheckRef<Type2> CCheckRef2 ; typedef ZNsMain::ZtCCheckRef<Type2> CCheckRef2 ;
@ -1419,7 +1430,10 @@ namespace ZNsMain
ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6, Type7>(){} ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6, Type7>(){}
ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6, Type7> ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6, Type7>
(Type1 _T1, Type2 _T2, Type3 _T3, Type4 _T4, Type5 _T5, Type6 _T6, Type7 _T7) : (
Type1 _T1, Type2 _T2, Type3 _T3, Type4 _T4,
Type5 _T5, Type6 _T6, Type7 _T7
) :
_1(CCheckRef1::PassData(_T1)) _1(CCheckRef1::PassData(_T1))
, _2(CCheckRef2::PassData(_T2)) , _2(CCheckRef2::PassData(_T2))
, _3(CCheckRef3::PassData(_T3)) , _3(CCheckRef3::PassData(_T3))
@ -1430,9 +1444,12 @@ namespace ZNsMain
{} {}
}; };
/*###########################################################################################*/ /*###########################################################################################*/
template< typename Type1, typename Type2, typename Type3, typename Type4, typename Type5, typename Type6, typename Type7, typename Type8 //////////////////////////////////////// template
< typename Type1, typename Type2, typename Type3,
typename Type4, typename Type5, typename Type6,
typename Type7, typename Type8
> >
struct ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8> ////////////////////////////////////////////////////////////////////////////////////////////////////////// struct ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8>
{ {
typedef ZNsMain::ZtCCheckRef<Type1> CCheckRef1 ; typedef ZNsMain::ZtCCheckRef<Type1> CCheckRef1 ;
typedef ZNsMain::ZtCCheckRef<Type2> CCheckRef2 ; typedef ZNsMain::ZtCCheckRef<Type2> CCheckRef2 ;
@ -1457,7 +1474,10 @@ namespace ZNsMain
ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8>(){} ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8>(){}
ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8> ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8>
(Type1 _T1, Type2 _T2, Type3 _T3, Type4 _T4, Type5 _T5, Type6 _T6, Type7 _T7, Type8 _T8) : (
Type1 _T1, Type2 _T2, Type3 _T3, Type4 _T4,
Type5 _T5, Type6 _T6, Type7 _T7, Type8 _T8
) :
_1(CCheckRef1::PassData(_T1)) _1(CCheckRef1::PassData(_T1))
, _2(CCheckRef2::PassData(_T2)) , _2(CCheckRef2::PassData(_T2))
, _3(CCheckRef3::PassData(_T3)) , _3(CCheckRef3::PassData(_T3))
@ -1469,9 +1489,13 @@ namespace ZNsMain
{} {}
}; };
/*###########################################################################################*/ /*###########################################################################################*/
template< typename Type1, typename Type2, typename Type3, typename Type4, typename Type5, typename Type6, typename Type7, typename Type8, typename Type9 //////////////////////// template
< typename Type1, typename Type2, typename Type3,
typename Type4, typename Type5, typename Type6,
typename Type7, typename Type8, typename Type9
> >
struct ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8, Type9> /////////////////////////////////////////////////////////////////////////////////////////////////// struct ZtStTuple
<Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8, Type9>
{ {
typedef ZNsMain::ZtCCheckRef<Type1> CCheckRef1 ; typedef ZNsMain::ZtCCheckRef<Type1> CCheckRef1 ;
typedef ZNsMain::ZtCCheckRef<Type2> CCheckRef2 ; typedef ZNsMain::ZtCCheckRef<Type2> CCheckRef2 ;
@ -1498,7 +1522,10 @@ namespace ZNsMain
ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8, Type9>(){} ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8, Type9>(){}
ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8, Type9> ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8, Type9>
(Type1 _T1, Type2 _T2, Type3 _T3, Type4 _T4, Type5 _T5, Type6 _T6, Type7 _T7, Type8 _T8, Type9 _T9) : (
Type1 _T1, Type2 _T2, Type3 _T3, Type4 _T4,
Type5 _T5, Type6 _T6, Type7 _T7, Type8 _T8, Type9 _T9
) :
_1(CCheckRef1::PassData(_T1)) _1(CCheckRef1::PassData(_T1))
, _2(CCheckRef2::PassData(_T2)) , _2(CCheckRef2::PassData(_T2))
, _3(CCheckRef3::PassData(_T3)) , _3(CCheckRef3::PassData(_T3))
@ -1511,9 +1538,16 @@ namespace ZNsMain
{} {}
}; };
/*###########################################################################################*/ /*###########################################################################################*/
template< typename Type1, typename Type2, typename Type3, typename Type4, typename Type5, typename Type6, typename Type7, typename Type8, typename Type9, typename Type10 template
< typename Type1, typename Type2, typename Type3,
typename Type4, typename Type5, typename Type6,
typename Type7, typename Type8, typename Type9, typename Type10
>
struct ZtStTuple
<
Type1, Type2, Type3, Type4, Type5,
Type6, Type7, Type8, Type9, Type10
> >
struct ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8, Type9, Type10> ///////////////////////////////////////////////////////////////////////////////////////////
{ {
typedef ZNsMain::ZtCCheckRef<Type1 > CCheckRef1 ; typedef ZNsMain::ZtCCheckRef<Type1 > CCheckRef1 ;
typedef ZNsMain::ZtCCheckRef<Type2 > CCheckRef2 ; typedef ZNsMain::ZtCCheckRef<Type2 > CCheckRef2 ;
@ -1543,7 +1577,11 @@ namespace ZNsMain
ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8, Type9, Type10>(){} ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8, Type9, Type10>(){}
ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8, Type9, Type10> ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8, Type9, Type10>
(Type1 _T1, Type2 _T2, Type3 _T3, Type4 _T4, Type5 _T5, Type6 _T6, Type7 _T7, Type8 _T8, Type9 _T9, Type10 _T10) : (
Type1 _T1, Type2 _T2 , Type3 _T3, Type4 _T4,
Type5 _T5, Type6 _T6 , Type7 _T7, Type8 _T8,
Type9 _T9, Type10 _T10
) :
_1 (CCheckRef1 ::PassData(_T1 )) _1 (CCheckRef1 ::PassData(_T1 ))
, _2 (CCheckRef2 ::PassData(_T2 )) , _2 (CCheckRef2 ::PassData(_T2 ))
, _3 (CCheckRef3 ::PassData(_T3 )) , _3 (CCheckRef3 ::PassData(_T3 ))
@ -1557,9 +1595,17 @@ namespace ZNsMain
{} {}
}; };
/*###########################################################################################*/ /*###########################################################################################*/
template< typename Type1, typename Type2, typename Type3, typename Type4, typename Type5, typename Type6, typename Type7, typename Type8, typename Type9, typename Type10, typename Type11 template
< typename Type1 , typename Type2 , typename Type3,
typename Type4 , typename Type5 , typename Type6,
typename Type7 , typename Type8 , typename Type9,
typename Type10, typename Type11
>
struct ZtStTuple
<
Type1, Type2, Type3, Type4 , Type5, Type6,
Type7, Type8, Type9, Type10, Type11
> >
struct ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8, Type9, Type10, Type11> ////////////////////////////////////////////////////////////////////////////////////////////
{ {
typedef ZNsMain::ZtCCheckRef<Type1 > CCheckRef1 ; typedef ZNsMain::ZtCCheckRef<Type1 > CCheckRef1 ;
typedef ZNsMain::ZtCCheckRef<Type2 > CCheckRef2 ; typedef ZNsMain::ZtCCheckRef<Type2 > CCheckRef2 ;
@ -1591,7 +1637,11 @@ namespace ZNsMain
ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8, Type9, Type10, Type11>(){} ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8, Type9, Type10, Type11>(){}
ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8, Type9, Type10, Type11> ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8, Type9, Type10, Type11>
(Type1 _T1, Type2 _T2, Type3 _T3, Type4 _T4, Type5 _T5, Type6 _T6, Type7 _T7, Type8 _T8, Type9 _T9, Type10 _T10, Type11 _T11) : (
Type1 _T1, Type2 _T2 , Type3 _T3 , Type4 _T4,
Type5 _T5, Type6 _T6 , Type7 _T7 , Type8 _T8,
Type9 _T9, Type10 _T10, Type11 _T11
) :
_1 (CCheckRef1 ::PassData(_T1 )) _1 (CCheckRef1 ::PassData(_T1 ))
, _2 (CCheckRef2 ::PassData(_T2 )) , _2 (CCheckRef2 ::PassData(_T2 ))
, _3 (CCheckRef3 ::PassData(_T3 )) , _3 (CCheckRef3 ::PassData(_T3 ))
@ -1606,9 +1656,17 @@ namespace ZNsMain
{} {}
}; };
/*###########################################################################################*/ /*###########################################################################################*/
template< typename Type1, typename Type2, typename Type3, typename Type4, typename Type5, typename Type6, typename Type7, typename Type8, typename Type9, typename Type10, typename Type11, typename Type12 template
< typename Type1 , typename Type2 , typename Type3 ,
typename Type4 , typename Type5 , typename Type6 ,
typename Type7 , typename Type8 , typename Type9 ,
typename Type10, typename Type11, typename Type12
>
struct ZtStTuple
<
Type1, Type2, Type3, Type4 , Type5 , Type6 ,
Type7, Type8, Type9, Type10, Type11, Type12
> >
struct ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8, Type9, Type10, Type11, Type12> /////////////////////////////////////////////////////////////////////////////////////////////////////
{ {
typedef ZNsMain::ZtCCheckRef<Type1 > CCheckRef1 ; typedef ZNsMain::ZtCCheckRef<Type1 > CCheckRef1 ;
typedef ZNsMain::ZtCCheckRef<Type2 > CCheckRef2 ; typedef ZNsMain::ZtCCheckRef<Type2 > CCheckRef2 ;
@ -1642,7 +1700,11 @@ namespace ZNsMain
ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8, Type9, Type10, Type11, Type12>(){} ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8, Type9, Type10, Type11, Type12>(){}
ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8, Type9, Type10, Type11, Type12> ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8, Type9, Type10, Type11, Type12>
(Type1 _T1, Type2 _T2, Type3 _T3, Type4 _T4, Type5 _T5, Type6 _T6, Type7 _T7, Type8 _T8, Type9 _T9, Type10 _T10, Type11 _T11, Type12 _T12) : (
Type1 _T1, Type2 _T2 , Type3 _T3 , Type4 _T4 ,
Type5 _T5, Type6 _T6 , Type7 _T7 , Type8 _T8 ,
Type9 _T9, Type10 _T10, Type11 _T11, Type12 _T12
) :
_1 (CCheckRef1 ::PassData(_T1 )) _1 (CCheckRef1 ::PassData(_T1 ))
, _2 (CCheckRef2 ::PassData(_T2 )) , _2 (CCheckRef2 ::PassData(_T2 ))
, _3 (CCheckRef3 ::PassData(_T3 )) , _3 (CCheckRef3 ::PassData(_T3 ))
@ -1661,132 +1723,458 @@ namespace ZNsMain
template<typename Type1>
ZtStTuple<Type1> ZftMakeTuple(Type1 _T1) /*/////////////////////////////////////////////////////////////////////////////////////////////
■ RVO(Return Value Optimization) 로 인해 아래가 가능하다. -- 2025-09-06 21:23
int VariMy=0; ZtStTuple<int&> myt1 = ZftMakeTuple(ZftMCP(VariMy));
/////////////////////////////////////////////////////////////////////////////////////////////*/
template
<typename Type1>
ZtStTuple /*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
<typename ZNsMain::ZtCCheckRef<Type1>::TypeData>
ZftMakeTuple(Type1 _T1)
{ {
return ZtStTuple<Type1>(_T1); typedef ZNsMain::ZtCCheckRef<Type1> CCheckRef1 ;
}/*
template<typename Type1>
ZtStTuple<Type1> ZftMakeTuple(Type1 _T1)*/
template<typename Type1, typename Type2> typedef typename CCheckRef1::TypeData TypeData1 ;
ZtStTuple<Type1, Type2> ZftMakeTuple(Type1 _T1, Type2 _T2)
{
return ZtStTuple<Type1, Type2>(_T1, _T2);
}/*
template<typename Type1, typename Type2>
ZtStTuple<Type1, Type2> ZftMakeTuple(Type1 _T1, Type2 _T2)*/
template<typename Type1, typename Type2, typename Type3> return ZtStTuple<TypeData1> /*::::::::::::::::::::::::::::::::::::*/
ZtStTuple<Type1, Type2, Type3> ZftMakeTuple(Type1 _T1, Type2 _T2, Type3 _T3) (
{ CCheckRef1::PassData(_T1)
return ZtStTuple<Type1, Type2, Type3>(_T1, _T2, _T3); );
}/* }
template<typename Type1, typename Type2, typename Type3> /*####################################################################*/
ZtStTuple<Type1, Type2, Type3> ZftMakeTuple(Type1 _T1, Type2 _T2, Type3 _T3)*/
template< typename Type1, typename Type2, typename Type3, typename Type4 template
<typename Type1, typename Type2>
ZtStTuple /*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
<
typename ZNsMain::ZtCCheckRef<Type1>::TypeData
, typename ZNsMain::ZtCCheckRef<Type2>::TypeData
> >
ZtStTuple<Type1, Type2, Type3, Type4> ZftMakeTuple ///////////////////// ZftMakeTuple(Type1 _T1, Type2 _T2)
{
typedef ZNsMain::ZtCCheckRef<Type1> CCheckRef1 ;
typedef ZNsMain::ZtCCheckRef<Type2> CCheckRef2 ;
typedef typename CCheckRef1::TypeData TypeData1 ;
typedef typename CCheckRef2::TypeData TypeData2 ;
return ZtStTuple<TypeData1, TypeData2> /*:::::::::::::::::::::::::*/
(
CCheckRef1::PassData(_T1)
, CCheckRef2::PassData(_T2)
);
}
/*####################################################################*/
template
<typename Type1, typename Type2, typename Type3>
ZtStTuple /*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
<
typename ZNsMain::ZtCCheckRef<Type1>::TypeData
, typename ZNsMain::ZtCCheckRef<Type2>::TypeData
, typename ZNsMain::ZtCCheckRef<Type3>::TypeData
>
ZftMakeTuple(Type1 _T1, Type2 _T2, Type3 _T3)
{
typedef ZNsMain::ZtCCheckRef<Type1> CCheckRef1 ;
typedef ZNsMain::ZtCCheckRef<Type2> CCheckRef2 ;
typedef ZNsMain::ZtCCheckRef<Type3> CCheckRef3 ;
typedef typename CCheckRef1::TypeData TypeData1 ;
typedef typename CCheckRef2::TypeData TypeData2 ;
typedef typename CCheckRef3::TypeData TypeData3 ;
return ZtStTuple<TypeData1, TypeData2, TypeData3> /*::::::::::::::*/
(
CCheckRef1::PassData(_T1)
, CCheckRef2::PassData(_T2)
, CCheckRef3::PassData(_T3)
);
}
/*####################################################################*/
template
< typename Type1, typename Type2, typename Type3, typename Type4 >
ZtStTuple /*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
<
typename ZNsMain::ZtCCheckRef<Type1>::TypeData
, typename ZNsMain::ZtCCheckRef<Type2>::TypeData
, typename ZNsMain::ZtCCheckRef<Type3>::TypeData
, typename ZNsMain::ZtCCheckRef<Type4>::TypeData
>
ZftMakeTuple /*#######################################################*/
( (
Type1 _T1, Type2 _T2, Type3 _T3, Type4 _T4 Type1 _T1, Type2 _T2, Type3 _T3, Type4 _T4
) )
/*####################################################################*/ /*####################################################################*/
{ {
return ZtStTuple<Type1, Type2, Type3, Type4>(_T1, _T2, _T3, _T4); typedef ZNsMain::ZtCCheckRef<Type1> CCheckRef1 ;
typedef ZNsMain::ZtCCheckRef<Type2> CCheckRef2 ;
typedef ZNsMain::ZtCCheckRef<Type3> CCheckRef3 ;
typedef ZNsMain::ZtCCheckRef<Type4> CCheckRef4 ;
typedef typename CCheckRef1::TypeData TypeData1 ;
typedef typename CCheckRef2::TypeData TypeData2 ;
typedef typename CCheckRef3::TypeData TypeData3 ;
typedef typename CCheckRef4::TypeData TypeData4 ;
return ZtStTuple<TypeData1, TypeData2, TypeData3, TypeData4> /*:::*/
(
CCheckRef1::PassData(_T1)
, CCheckRef2::PassData(_T2)
, CCheckRef3::PassData(_T3)
, CCheckRef4::PassData(_T4)
);
} }
/*####################################################################*/
template< typename Type1, typename Type2, template< typename Type1, typename Type2,
typename Type3, typename Type4, typename Type5 typename Type3, typename Type4, typename Type5
> >
ZtStTuple<Type1, Type2, Type3, Type4, Type5> ZftMakeTuple ////////////// ZtStTuple /*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
<
typename ZNsMain::ZtCCheckRef<Type1>::TypeData
, typename ZNsMain::ZtCCheckRef<Type2>::TypeData
, typename ZNsMain::ZtCCheckRef<Type3>::TypeData
, typename ZNsMain::ZtCCheckRef<Type4>::TypeData
, typename ZNsMain::ZtCCheckRef<Type5>::TypeData
>
ZftMakeTuple /*#######################################################*/
( (
Type1 _T1, Type2 _T2, Type3 _T3, Type4 _T4, Type5 _T5 Type1 _T1, Type2 _T2, Type3 _T3, Type4 _T4, Type5 _T5
) )
/*####################################################################*/ /*####################################################################*/
{ {
return ZtStTuple<Type1, Type2, Type3, Type4, Type5>(_T1, _T2, _T3, _T4, _T5); typedef ZNsMain::ZtCCheckRef<Type1> CCheckRef1 ;
typedef ZNsMain::ZtCCheckRef<Type2> CCheckRef2 ;
typedef ZNsMain::ZtCCheckRef<Type3> CCheckRef3 ;
typedef ZNsMain::ZtCCheckRef<Type4> CCheckRef4 ;
typedef ZNsMain::ZtCCheckRef<Type5> CCheckRef5 ;
typedef typename CCheckRef1::TypeData TypeData1 ;
typedef typename CCheckRef2::TypeData TypeData2 ;
typedef typename CCheckRef3::TypeData TypeData3 ;
typedef typename CCheckRef4::TypeData TypeData4 ;
typedef typename CCheckRef5::TypeData TypeData5 ;
return ZtStTuple /*:::::::::::::::::::::::::::::::::::::::::::::::*/
<
TypeData1, TypeData2,
TypeData3, TypeData4, TypeData5
>
(
CCheckRef1::PassData(_T1)
, CCheckRef2::PassData(_T2)
, CCheckRef3::PassData(_T3)
, CCheckRef4::PassData(_T4)
, CCheckRef5::PassData(_T5)
);
} }
/*####################################################################*/
template< typename Type1, typename Type2, typename Type3, template< typename Type1, typename Type2, typename Type3,
typename Type4, typename Type5, typename Type6 typename Type4, typename Type5, typename Type6
> >
ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6> ZftMakeTuple /////// ZtStTuple /*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
<
typename ZNsMain::ZtCCheckRef<Type1>::TypeData
, typename ZNsMain::ZtCCheckRef<Type2>::TypeData
, typename ZNsMain::ZtCCheckRef<Type3>::TypeData
, typename ZNsMain::ZtCCheckRef<Type4>::TypeData
, typename ZNsMain::ZtCCheckRef<Type5>::TypeData
, typename ZNsMain::ZtCCheckRef<Type6>::TypeData
>
ZftMakeTuple /*#######################################################*/
( (
Type1 _T1, Type2 _T2, Type3 _T3, Type4 _T4, Type5 _T5, Type6 _T6 Type1 _T1, Type2 _T2, Type3 _T3, Type4 _T4, Type5 _T5, Type6 _T6
) )
/*####################################################################*/ /*####################################################################*/
{ {
return ZtStTuple typedef ZNsMain::ZtCCheckRef<Type1> CCheckRef1 ;
<Type1, Type2, Type3, Type4, Type5, Type6> typedef ZNsMain::ZtCCheckRef<Type2> CCheckRef2 ;
(_T1, _T2, _T3, _T4, _T5, _T6); typedef ZNsMain::ZtCCheckRef<Type3> CCheckRef3 ;
typedef ZNsMain::ZtCCheckRef<Type4> CCheckRef4 ;
typedef ZNsMain::ZtCCheckRef<Type5> CCheckRef5 ;
typedef ZNsMain::ZtCCheckRef<Type6> CCheckRef6 ;
typedef typename CCheckRef1::TypeData TypeData1 ;
typedef typename CCheckRef2::TypeData TypeData2 ;
typedef typename CCheckRef3::TypeData TypeData3 ;
typedef typename CCheckRef4::TypeData TypeData4 ;
typedef typename CCheckRef5::TypeData TypeData5 ;
typedef typename CCheckRef6::TypeData TypeData6 ;
return ZtStTuple /*:::::::::::::::::::::::::::::::::::::::::::::::*/
<
TypeData1, TypeData2, TypeData3,
TypeData4, TypeData5, TypeData6
>
(
CCheckRef1::PassData(_T1)
, CCheckRef2::PassData(_T2)
, CCheckRef3::PassData(_T3)
, CCheckRef4::PassData(_T4)
, CCheckRef5::PassData(_T5)
, CCheckRef6::PassData(_T6)
);
} }
/*####################################################################*/
template< typename Type1, typename Type2, typename Type3, template< typename Type1, typename Type2, typename Type3,
typename Type4, typename Type5, typename Type6, typename Type7 typename Type4, typename Type5, typename Type6, typename Type7
> >
ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6, Type7> ZftMakeTuple ZtStTuple /*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
<
typename ZNsMain::ZtCCheckRef<Type1>::TypeData
, typename ZNsMain::ZtCCheckRef<Type2>::TypeData
, typename ZNsMain::ZtCCheckRef<Type3>::TypeData
, typename ZNsMain::ZtCCheckRef<Type4>::TypeData
, typename ZNsMain::ZtCCheckRef<Type5>::TypeData
, typename ZNsMain::ZtCCheckRef<Type6>::TypeData
, typename ZNsMain::ZtCCheckRef<Type7>::TypeData
>
ZftMakeTuple /*#######################################################*/
( (
Type1 _T1, Type2 _T2, Type3 _T3, Type4 _T4, Type5 _T5, Type6 _T6, Type7 _T7 Type1 _T1, Type2 _T2, Type3 _T3, Type4 _T4,
Type5 _T5, Type6 _T6, Type7 _T7
) )
/*####################################################################*/ /*####################################################################*/
{ {
return ZtStTuple typedef ZNsMain::ZtCCheckRef<Type1> CCheckRef1 ;
<Type1, Type2, Type3, Type4, Type5, Type6, Type7> typedef ZNsMain::ZtCCheckRef<Type2> CCheckRef2 ;
(_T1, _T2, _T3, _T4, _T5, _T6, _T7); typedef ZNsMain::ZtCCheckRef<Type3> CCheckRef3 ;
typedef ZNsMain::ZtCCheckRef<Type4> CCheckRef4 ;
typedef ZNsMain::ZtCCheckRef<Type5> CCheckRef5 ;
typedef ZNsMain::ZtCCheckRef<Type6> CCheckRef6 ;
typedef ZNsMain::ZtCCheckRef<Type7> CCheckRef7 ;
typedef typename CCheckRef1::TypeData TypeData1 ;
typedef typename CCheckRef2::TypeData TypeData2 ;
typedef typename CCheckRef3::TypeData TypeData3 ;
typedef typename CCheckRef4::TypeData TypeData4 ;
typedef typename CCheckRef5::TypeData TypeData5 ;
typedef typename CCheckRef6::TypeData TypeData6 ;
typedef typename CCheckRef7::TypeData TypeData7 ;
return ZtStTuple /*:::::::::::::::::::::::::::::::::::::::::::::::*/
<
TypeData1, TypeData2, TypeData3, TypeData4,
TypeData5, TypeData6, TypeData7
>
(
CCheckRef1::PassData(_T1)
, CCheckRef2::PassData(_T2)
, CCheckRef3::PassData(_T3)
, CCheckRef4::PassData(_T4)
, CCheckRef5::PassData(_T5)
, CCheckRef6::PassData(_T6)
, CCheckRef7::PassData(_T7)
);
} }
/*####################################################################*/
template< typename Type1, typename Type2, typename Type3, template< typename Type1, typename Type2, typename Type3,
typename Type4, typename Type5, typename Type6, typename Type4, typename Type5, typename Type6,
typename Type7, typename Type8 typename Type7, typename Type8
> >
ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8> ZftMakeTuple ZtStTuple /*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
<
typename ZNsMain::ZtCCheckRef<Type1>::TypeData
, typename ZNsMain::ZtCCheckRef<Type2>::TypeData
, typename ZNsMain::ZtCCheckRef<Type3>::TypeData
, typename ZNsMain::ZtCCheckRef<Type4>::TypeData
, typename ZNsMain::ZtCCheckRef<Type5>::TypeData
, typename ZNsMain::ZtCCheckRef<Type6>::TypeData
, typename ZNsMain::ZtCCheckRef<Type7>::TypeData
, typename ZNsMain::ZtCCheckRef<Type8>::TypeData
>
ZftMakeTuple /*#######################################################*/
( (
Type1 _T1, Type2 _T2, Type3 _T3, Type4 _T4, Type5 _T5, Type6 _T6, Type7 _T7, Type8 _T8 Type1 _T1, Type2 _T2, Type3 _T3, Type4 _T4,
Type5 _T5, Type6 _T6, Type7 _T7, Type8 _T8
) )
/*##########################################################################*/ /*####################################################################*/
{ {
return ZtStTuple typedef ZNsMain::ZtCCheckRef<Type1> CCheckRef1 ;
<Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8> typedef ZNsMain::ZtCCheckRef<Type2> CCheckRef2 ;
(_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8); typedef ZNsMain::ZtCCheckRef<Type3> CCheckRef3 ;
typedef ZNsMain::ZtCCheckRef<Type4> CCheckRef4 ;
typedef ZNsMain::ZtCCheckRef<Type5> CCheckRef5 ;
typedef ZNsMain::ZtCCheckRef<Type6> CCheckRef6 ;
typedef ZNsMain::ZtCCheckRef<Type7> CCheckRef7 ;
typedef ZNsMain::ZtCCheckRef<Type8> CCheckRef8 ;
typedef typename CCheckRef1::TypeData TypeData1 ;
typedef typename CCheckRef2::TypeData TypeData2 ;
typedef typename CCheckRef3::TypeData TypeData3 ;
typedef typename CCheckRef4::TypeData TypeData4 ;
typedef typename CCheckRef5::TypeData TypeData5 ;
typedef typename CCheckRef6::TypeData TypeData6 ;
typedef typename CCheckRef7::TypeData TypeData7 ;
typedef typename CCheckRef8::TypeData TypeData8 ;
return ZtStTuple /*:::::::::::::::::::::::::::::::::::::::::::::::*/
<
TypeData1, TypeData2, TypeData3, TypeData4,
TypeData5, TypeData6, TypeData7, TypeData8
>
(
CCheckRef1::PassData(_T1)
, CCheckRef2::PassData(_T2)
, CCheckRef3::PassData(_T3)
, CCheckRef4::PassData(_T4)
, CCheckRef5::PassData(_T5)
, CCheckRef6::PassData(_T6)
, CCheckRef7::PassData(_T7)
, CCheckRef8::PassData(_T8)
);
} }
/*####################################################################*/
template< typename Type1, typename Type2, typename Type3, template< typename Type1, typename Type2, typename Type3,
typename Type4, typename Type5, typename Type6, typename Type4, typename Type5, typename Type6,
typename Type7, typename Type8, typename Type9 typename Type7, typename Type8, typename Type9
> >
ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8, Type9> ZftMakeTuple ZtStTuple /*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
<
typename ZNsMain::ZtCCheckRef<Type1>::TypeData
, typename ZNsMain::ZtCCheckRef<Type2>::TypeData
, typename ZNsMain::ZtCCheckRef<Type3>::TypeData
, typename ZNsMain::ZtCCheckRef<Type4>::TypeData
, typename ZNsMain::ZtCCheckRef<Type5>::TypeData
, typename ZNsMain::ZtCCheckRef<Type6>::TypeData
, typename ZNsMain::ZtCCheckRef<Type7>::TypeData
, typename ZNsMain::ZtCCheckRef<Type8>::TypeData
, typename ZNsMain::ZtCCheckRef<Type9>::TypeData
>
ZftMakeTuple /*#######################################################*/
( (
Type1 _T1, Type2 _T2, Type3 _T3, Type4 _T4, Type5 _T5, Type6 _T6, Type7 _T7, Type8 _T8, Type9 _T9 Type1 _T1, Type2 _T2, Type3 _T3, Type4 _T4,
Type5 _T5, Type6 _T6, Type7 _T7, Type8 _T8, Type9 _T9
) )
/*#################################################################################*/ /*####################################################################*/
{ {
return ZtStTuple typedef ZNsMain::ZtCCheckRef<Type1> CCheckRef1 ;
<Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8, Type9> typedef ZNsMain::ZtCCheckRef<Type2> CCheckRef2 ;
(_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9); typedef ZNsMain::ZtCCheckRef<Type3> CCheckRef3 ;
typedef ZNsMain::ZtCCheckRef<Type4> CCheckRef4 ;
typedef ZNsMain::ZtCCheckRef<Type5> CCheckRef5 ;
typedef ZNsMain::ZtCCheckRef<Type6> CCheckRef6 ;
typedef ZNsMain::ZtCCheckRef<Type7> CCheckRef7 ;
typedef ZNsMain::ZtCCheckRef<Type8> CCheckRef8 ;
typedef ZNsMain::ZtCCheckRef<Type9> CCheckRef9 ;
typedef typename CCheckRef1::TypeData TypeData1 ;
typedef typename CCheckRef2::TypeData TypeData2 ;
typedef typename CCheckRef3::TypeData TypeData3 ;
typedef typename CCheckRef4::TypeData TypeData4 ;
typedef typename CCheckRef5::TypeData TypeData5 ;
typedef typename CCheckRef6::TypeData TypeData6 ;
typedef typename CCheckRef7::TypeData TypeData7 ;
typedef typename CCheckRef8::TypeData TypeData8 ;
typedef typename CCheckRef9::TypeData TypeData9 ;
return ZtStTuple /*:::::::::::::::::::::::::::::::::::::::::::::::*/
<
TypeData1, TypeData2, TypeData3, TypeData4,
TypeData5, TypeData6, TypeData7, TypeData8, TypeData9
>
(
CCheckRef1::PassData(_T1)
, CCheckRef2::PassData(_T2)
, CCheckRef3::PassData(_T3)
, CCheckRef4::PassData(_T4)
, CCheckRef5::PassData(_T5)
, CCheckRef6::PassData(_T6)
, CCheckRef7::PassData(_T7)
, CCheckRef8::PassData(_T8)
, CCheckRef9::PassData(_T9)
);
} }
/*####################################################################*/
template< typename Type1, typename Type2, typename Type3, template< typename Type1, typename Type2, typename Type3,
typename Type4, typename Type5, typename Type6, typename Type4, typename Type5, typename Type6,
typename Type7, typename Type8, typename Type9, typename Type10 typename Type7, typename Type8, typename Type9, typename Type10
> >
ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8, Type9, Type10> ZftMakeTuple ZtStTuple /*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
<
typename ZNsMain::ZtCCheckRef<Type1 >::TypeData
, typename ZNsMain::ZtCCheckRef<Type2 >::TypeData
, typename ZNsMain::ZtCCheckRef<Type3 >::TypeData
, typename ZNsMain::ZtCCheckRef<Type4 >::TypeData
, typename ZNsMain::ZtCCheckRef<Type5 >::TypeData
, typename ZNsMain::ZtCCheckRef<Type6 >::TypeData
, typename ZNsMain::ZtCCheckRef<Type7 >::TypeData
, typename ZNsMain::ZtCCheckRef<Type8 >::TypeData
, typename ZNsMain::ZtCCheckRef<Type9 >::TypeData
, typename ZNsMain::ZtCCheckRef<Type10>::TypeData
>
ZftMakeTuple /*#######################################################*/
( (
Type1 _T1, Type2 _T2, Type3 _T3, Type4 _T4, Type5 _T5, Type6 _T6, Type7 _T7, Type8 _T8, Type9 _T9, Type10 _T10 Type1 _T1, Type2 _T2 , Type3 _T3, Type4 _T4,
Type5 _T5, Type6 _T6 , Type7 _T7, Type8 _T8,
Type9 _T9, Type10 _T10
) )
/*#########################################################################################*/ /*####################################################################*/
{ {
return ZtStTuple typedef ZNsMain::ZtCCheckRef<Type1 > CCheckRef1 ;
<Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8, Type9, Type10> typedef ZNsMain::ZtCCheckRef<Type2 > CCheckRef2 ;
(_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10); typedef ZNsMain::ZtCCheckRef<Type3 > CCheckRef3 ;
typedef ZNsMain::ZtCCheckRef<Type4 > CCheckRef4 ;
typedef ZNsMain::ZtCCheckRef<Type5 > CCheckRef5 ;
typedef ZNsMain::ZtCCheckRef<Type6 > CCheckRef6 ;
typedef ZNsMain::ZtCCheckRef<Type7 > CCheckRef7 ;
typedef ZNsMain::ZtCCheckRef<Type8 > CCheckRef8 ;
typedef ZNsMain::ZtCCheckRef<Type9 > CCheckRef9 ;
typedef ZNsMain::ZtCCheckRef<Type10> CCheckRef10;
typedef typename CCheckRef1 ::TypeData TypeData1 ;
typedef typename CCheckRef2 ::TypeData TypeData2 ;
typedef typename CCheckRef3 ::TypeData TypeData3 ;
typedef typename CCheckRef4 ::TypeData TypeData4 ;
typedef typename CCheckRef5 ::TypeData TypeData5 ;
typedef typename CCheckRef6 ::TypeData TypeData6 ;
typedef typename CCheckRef7 ::TypeData TypeData7 ;
typedef typename CCheckRef8 ::TypeData TypeData8 ;
typedef typename CCheckRef9 ::TypeData TypeData9 ;
typedef typename CCheckRef10::TypeData TypeData10 ;
return ZtStTuple /*:::::::::::::::::::::::::::::::::::::::::::::::*/
<
TypeData1, TypeData2, TypeData3, TypeData4,
TypeData5, TypeData6, TypeData7, TypeData8,
TypeData9, TypeData10
>
(
CCheckRef1 ::PassData(_T1 )
, CCheckRef2 ::PassData(_T2 )
, CCheckRef3 ::PassData(_T3 )
, CCheckRef4 ::PassData(_T4 )
, CCheckRef5 ::PassData(_T5 )
, CCheckRef6 ::PassData(_T6 )
, CCheckRef7 ::PassData(_T7 )
, CCheckRef8 ::PassData(_T8 )
, CCheckRef9 ::PassData(_T9 )
, CCheckRef10::PassData(_T10)
);
} }
/*####################################################################*/
template< typename Type1 , typename Type2, typename Type3, template< typename Type1 , typename Type2, typename Type3,
@ -1794,16 +2182,73 @@ namespace ZNsMain
typename Type7 , typename Type8, typename Type9, typename Type7 , typename Type8, typename Type9,
typename Type10, typename Type11 typename Type10, typename Type11
> >
ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8, Type9, Type10, Type11> ZftMakeTuple ZtStTuple /*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
<
typename ZNsMain::ZtCCheckRef<Type1 >::TypeData
, typename ZNsMain::ZtCCheckRef<Type2 >::TypeData
, typename ZNsMain::ZtCCheckRef<Type3 >::TypeData
, typename ZNsMain::ZtCCheckRef<Type4 >::TypeData
, typename ZNsMain::ZtCCheckRef<Type5 >::TypeData
, typename ZNsMain::ZtCCheckRef<Type6 >::TypeData
, typename ZNsMain::ZtCCheckRef<Type7 >::TypeData
, typename ZNsMain::ZtCCheckRef<Type8 >::TypeData
, typename ZNsMain::ZtCCheckRef<Type9 >::TypeData
, typename ZNsMain::ZtCCheckRef<Type10>::TypeData
, typename ZNsMain::ZtCCheckRef<Type11>::TypeData
>
ZftMakeTuple /*#######################################################*/
( (
Type1 _T1, Type2 _T2, Type3 _T3, Type4 _T4, Type5 _T5, Type6 _T6, Type7 _T7, Type8 _T8, Type9 _T9, Type10 _T10, Type11 _T11 Type1 _T1, Type2 _T2 , Type3 _T3 , Type4 _T4,
Type5 _T5, Type6 _T6 , Type7 _T7 , Type8 _T8,
Type9 _T9, Type10 _T10, Type11 _T11
) )
/*#################################################################################################*/ /*####################################################################*/
{ {
return ZtStTuple typedef ZNsMain::ZtCCheckRef<Type1 > CCheckRef1 ;
<Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8, Type9, Type10, Type11> typedef ZNsMain::ZtCCheckRef<Type2 > CCheckRef2 ;
(_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11); typedef ZNsMain::ZtCCheckRef<Type3 > CCheckRef3 ;
typedef ZNsMain::ZtCCheckRef<Type4 > CCheckRef4 ;
typedef ZNsMain::ZtCCheckRef<Type5 > CCheckRef5 ;
typedef ZNsMain::ZtCCheckRef<Type6 > CCheckRef6 ;
typedef ZNsMain::ZtCCheckRef<Type7 > CCheckRef7 ;
typedef ZNsMain::ZtCCheckRef<Type8 > CCheckRef8 ;
typedef ZNsMain::ZtCCheckRef<Type9 > CCheckRef9 ;
typedef ZNsMain::ZtCCheckRef<Type10> CCheckRef10;
typedef ZNsMain::ZtCCheckRef<Type11> CCheckRef11;
typedef typename CCheckRef1 ::TypeData TypeData1 ;
typedef typename CCheckRef2 ::TypeData TypeData2 ;
typedef typename CCheckRef3 ::TypeData TypeData3 ;
typedef typename CCheckRef4 ::TypeData TypeData4 ;
typedef typename CCheckRef5 ::TypeData TypeData5 ;
typedef typename CCheckRef6 ::TypeData TypeData6 ;
typedef typename CCheckRef7 ::TypeData TypeData7 ;
typedef typename CCheckRef8 ::TypeData TypeData8 ;
typedef typename CCheckRef9 ::TypeData TypeData9 ;
typedef typename CCheckRef10::TypeData TypeData10 ;
typedef typename CCheckRef11::TypeData TypeData11 ;
return ZtStTuple /*:::::::::::::::::::::::::::::::::::::::::::::::*/
<
TypeData1, TypeData2 , TypeData3, TypeData4,
TypeData5, TypeData6 , TypeData7, TypeData8,
TypeData9, TypeData10, TypeData11
>
(
CCheckRef1 ::PassData(_T1 )
, CCheckRef2 ::PassData(_T2 )
, CCheckRef3 ::PassData(_T3 )
, CCheckRef4 ::PassData(_T4 )
, CCheckRef5 ::PassData(_T5 )
, CCheckRef6 ::PassData(_T6 )
, CCheckRef7 ::PassData(_T7 )
, CCheckRef8 ::PassData(_T8 )
, CCheckRef9 ::PassData(_T9 )
, CCheckRef10::PassData(_T10)
, CCheckRef11::PassData(_T11)
);
} }
/*####################################################################*/
template< typename Type1 , typename Type2 , typename Type3, template< typename Type1 , typename Type2 , typename Type3,
@ -1811,16 +2256,77 @@ namespace ZNsMain
typename Type7 , typename Type8 , typename Type9, typename Type7 , typename Type8 , typename Type9,
typename Type10, typename Type11, typename Type12 typename Type10, typename Type11, typename Type12
> >
ZtStTuple<Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8, Type9, Type10, Type11, Type12> ZftMakeTuple ZtStTuple /*::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
<
typename ZNsMain::ZtCCheckRef<Type1 >::TypeData
, typename ZNsMain::ZtCCheckRef<Type2 >::TypeData
, typename ZNsMain::ZtCCheckRef<Type3 >::TypeData
, typename ZNsMain::ZtCCheckRef<Type4 >::TypeData
, typename ZNsMain::ZtCCheckRef<Type5 >::TypeData
, typename ZNsMain::ZtCCheckRef<Type6 >::TypeData
, typename ZNsMain::ZtCCheckRef<Type7 >::TypeData
, typename ZNsMain::ZtCCheckRef<Type8 >::TypeData
, typename ZNsMain::ZtCCheckRef<Type9 >::TypeData
, typename ZNsMain::ZtCCheckRef<Type10>::TypeData
, typename ZNsMain::ZtCCheckRef<Type11>::TypeData
, typename ZNsMain::ZtCCheckRef<Type12>::TypeData
>
ZftMakeTuple /*#######################################################*/
( (
Type1 _T1, Type2 _T2, Type3 _T3, Type4 _T4, Type5 _T5, Type6 _T6, Type7 _T7, Type8 _T8, Type9 _T9, Type10 _T10, Type11 _T11, Type12 _T12 Type1 _T1, Type2 _T2 , Type3 _T3 , Type4 _T4 ,
Type5 _T5, Type6 _T6 , Type7 _T7 , Type8 _T8 ,
Type9 _T9, Type10 _T10, Type11 _T11, Type12 _T12
) )
/*#########################################################################################################*/ /*####################################################################*/
{ {
return ZtStTuple typedef ZNsMain::ZtCCheckRef<Type1 > CCheckRef1 ;
<Type1, Type2, Type3, Type4, Type5, Type6, Type7, Type8, Type9, Type10, Type11, Type12> typedef ZNsMain::ZtCCheckRef<Type2 > CCheckRef2 ;
(_T1, _T2, _T3, _T4, _T5, _T6, _T7, _T8, _T9, _T10, _T11, _T12); typedef ZNsMain::ZtCCheckRef<Type3 > CCheckRef3 ;
typedef ZNsMain::ZtCCheckRef<Type4 > CCheckRef4 ;
typedef ZNsMain::ZtCCheckRef<Type5 > CCheckRef5 ;
typedef ZNsMain::ZtCCheckRef<Type6 > CCheckRef6 ;
typedef ZNsMain::ZtCCheckRef<Type7 > CCheckRef7 ;
typedef ZNsMain::ZtCCheckRef<Type8 > CCheckRef8 ;
typedef ZNsMain::ZtCCheckRef<Type9 > CCheckRef9 ;
typedef ZNsMain::ZtCCheckRef<Type10> CCheckRef10;
typedef ZNsMain::ZtCCheckRef<Type11> CCheckRef11;
typedef ZNsMain::ZtCCheckRef<Type12> CCheckRef12;
typedef typename CCheckRef1 ::TypeData TypeData1 ;
typedef typename CCheckRef2 ::TypeData TypeData2 ;
typedef typename CCheckRef3 ::TypeData TypeData3 ;
typedef typename CCheckRef4 ::TypeData TypeData4 ;
typedef typename CCheckRef5 ::TypeData TypeData5 ;
typedef typename CCheckRef6 ::TypeData TypeData6 ;
typedef typename CCheckRef7 ::TypeData TypeData7 ;
typedef typename CCheckRef8 ::TypeData TypeData8 ;
typedef typename CCheckRef9 ::TypeData TypeData9 ;
typedef typename CCheckRef10::TypeData TypeData10 ;
typedef typename CCheckRef11::TypeData TypeData11 ;
typedef typename CCheckRef12::TypeData TypeData12 ;
return ZtStTuple /*:::::::::::::::::::::::::::::::::::::::::::::::*/
<
TypeData1, TypeData2 , TypeData3 , TypeData4,
TypeData5, TypeData6 , TypeData7 , TypeData8,
TypeData9, TypeData10, TypeData11, TypeData12
>
(
CCheckRef1 ::PassData(_T1 )
, CCheckRef2 ::PassData(_T2 )
, CCheckRef3 ::PassData(_T3 )
, CCheckRef4 ::PassData(_T4 )
, CCheckRef5 ::PassData(_T5 )
, CCheckRef6 ::PassData(_T6 )
, CCheckRef7 ::PassData(_T7 )
, CCheckRef8 ::PassData(_T8 )
, CCheckRef9 ::PassData(_T9 )
, CCheckRef10::PassData(_T10)
, CCheckRef11::PassData(_T11)
, CCheckRef12::PassData(_T12)
);
} }
/*####################################################################*/

View File

@ -20,8 +20,40 @@ namespace ZNsMain
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0) static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)
{ {
ZCStringStd VO_BuffCStr("myBuff"); ZCStringStd VO_BuffCStr("myBuff") ;
ZTypInt VI_NowCnt = 0; ZTypInt VI_NowCnt = 0 ;
#ifdef __CPP_1998__
cout<<"# Use C++ 98 Spec"<<endl;
ZtStTuple<int>
myt1 = ZftMakeTuple(1);
ZtStTuple<int, int>
myt2 = ZftMakeTuple(1, 34);
ZtStTuple<int, int, char>
myt3 = ZftMakeTuple(1, 34, 'C');
ZtStTuple<int, int, char, ZCStringStd&>
myt4 = ZftMakeTuple(1, 34, 'C', ZftMCP(VO_BuffCStr));
ZtStTuple<int, int, char, ZCStringStd&, bool>
myt5 = ZftMakeTuple(1, 34, 'C', ZftMCP(VO_BuffCStr), true);
ZtStTuple<int, int, char, ZCStringStd&, bool, const char*>
myt6 = ZftMakeTuple(1, 34, 'C', ZftMCP(VO_BuffCStr), true, "AB");
ZtStTuple<int, int, char, ZCStringStd&, bool, const char*, double>
myt7 = ZftMakeTuple(1, 34, 'C', ZftMCP(VO_BuffCStr), true, "AB", double(0.34));
ZtStTuple<int, int, char, ZCStringStd&, bool, const char*, double, float>
myt8 = ZftMakeTuple(1, 34, 'C', ZftMCP(VO_BuffCStr), true, "AB", double(0.34), float(24.43));
ZtStTuple<int, int, char, ZCStringStd&, bool, const char*, double, float, ZCStringStd&>
myt9 = ZftMakeTuple(1, 34, 'C', ZftMCP(VO_BuffCStr), true, "AB", double(0.34), float(24.43), ZftMCP(VO_BuffCStr));
ZtStTuple<int, int, char, ZCStringStd&, bool, const char*, double, float, ZCStringStd&, int&>
myt10= ZftMakeTuple(1, 34, 'C', ZftMCP(VO_BuffCStr), true, "AB", double(0.34), float(24.43), ZftMCP(VO_BuffCStr), ZftMCP(VI_NowCnt));
ZtStTuple<int, int, char, ZCStringStd&, bool, const char*, double, float, ZCStringStd&, int&, int>
myt11= ZftMakeTuple(1, 34, 'C', ZftMCP(VO_BuffCStr), true, "AB", double(0.34), float(24.43), ZftMCP(VO_BuffCStr), ZftMCP(VI_NowCnt), 20250906);
ZtStTuple<int, int, char, ZCStringStd&, bool, const char*, double, float, ZCStringStd&, int&, int, wchar_t>
myt12= ZftMakeTuple(1, 34, 'C', ZftMCP(VO_BuffCStr), true, "AB", double(0.34), float(24.43), ZftMCP(VO_BuffCStr), ZftMCP(VI_NowCnt), 20250906, wchar_t(0));
#else
cout<<"# Use auto keyword for ZtStTuple<> variable"<<endl;
auto myt1 = ZftMakeTuple(1); auto myt1 = ZftMakeTuple(1);
auto myt2 = ZftMakeTuple(1, 34); auto myt2 = ZftMakeTuple(1, 34);
@ -35,6 +67,7 @@ namespace ZNsMain
auto myt10= ZftMakeTuple(1, 34, 'C', ZftMCP(VO_BuffCStr), true, "AB", double(0.34), float(24.43), ZftMCP(VO_BuffCStr), ZftMCP(VI_NowCnt)); auto myt10= ZftMakeTuple(1, 34, 'C', ZftMCP(VO_BuffCStr), true, "AB", double(0.34), float(24.43), ZftMCP(VO_BuffCStr), ZftMCP(VI_NowCnt));
auto myt11= ZftMakeTuple(1, 34, 'C', ZftMCP(VO_BuffCStr), true, "AB", double(0.34), float(24.43), ZftMCP(VO_BuffCStr), ZftMCP(VI_NowCnt), 20250906); auto myt11= ZftMakeTuple(1, 34, 'C', ZftMCP(VO_BuffCStr), true, "AB", double(0.34), float(24.43), ZftMCP(VO_BuffCStr), ZftMCP(VI_NowCnt), 20250906);
auto myt12= ZftMakeTuple(1, 34, 'C', ZftMCP(VO_BuffCStr), true, "AB", double(0.34), float(24.43), ZftMCP(VO_BuffCStr), ZftMCP(VI_NowCnt), 20250906, wchar_t(0)); auto myt12= ZftMakeTuple(1, 34, 'C', ZftMCP(VO_BuffCStr), true, "AB", double(0.34), float(24.43), ZftMCP(VO_BuffCStr), ZftMCP(VI_NowCnt), 20250906, wchar_t(0));
#endif
myt10._10 = 1200; myt10._10 = 1200;
myt11._10 += 1200; myt11._10 += 1200;
@ -43,6 +76,19 @@ namespace ZNsMain
cout<<myt10._10<<endl; cout<<myt10._10<<endl;
cout<<VI_NowCnt<<endl; cout<<VI_NowCnt<<endl;
cout<<"_1 type : "<<typeid(myt12._1 ).name()<<endl;
cout<<"_2 type : "<<typeid(myt12._2 ).name()<<endl;
cout<<"_3 type : "<<typeid(myt12._3 ).name()<<endl;
cout<<"_4 type : "<<typeid(myt12._4 ).name()<<endl;
cout<<"_5 type : "<<typeid(myt12._5 ).name()<<endl;
cout<<"_6 type : "<<typeid(myt12._6 ).name()<<endl;
cout<<"_7 type : "<<typeid(myt12._7 ).name()<<endl;
cout<<"_8 type : "<<typeid(myt12._8 ).name()<<endl;
cout<<"_9 type : "<<typeid(myt12._9 ).name()<<endl;
cout<<"_10 type : "<<typeid(myt12._10).name()<<endl;
cout<<"_11 type : "<<typeid(myt12._11).name()<<endl;
cout<<"_12 type : "<<typeid(myt12._12).name()<<endl;
return 0; return 0;
}/* }/*
static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)*/ static int Main(int AI_ArgCnt=0, char* APP_ArgVal[]=0)*/
@ -77,8 +123,8 @@ int main(int AI_ArgCnt, char* APP_ArgVal[])*/
■ mingw 컴파일 ■ mingw 컴파일
//g++.exe -std=c++98 -o ZftMakeTuple_000_mw.exe ZftMakeTuple_000.cpp -I../ g++.exe -std=c++98 -o ZftMakeTuple_000_mw_98.exe ZftMakeTuple_000.cpp -I../ -D__CPP_1998__
//g++.exe -std=c++98 -o ZftMakeTuple_000_mw_D.exe ZftMakeTuple_000.cpp -I../ -D_DEBUG g++.exe -std=c++98 -o ZftMakeTuple_000_mw_98_D.exe ZftMakeTuple_000.cpp -I../ -D__CPP_1998__ -D_DEBUG
g++.exe -o ZftMakeTuple_000_mw.exe ZftMakeTuple_000.cpp -I../ g++.exe -o ZftMakeTuple_000_mw.exe ZftMakeTuple_000.cpp -I../
g++.exe -o ZftMakeTuple_000_mw_D.exe ZftMakeTuple_000.cpp -I../ -D_DEBUG g++.exe -o ZftMakeTuple_000_mw_D.exe ZftMakeTuple_000.cpp -I../ -D_DEBUG
@ -86,6 +132,9 @@ int main(int AI_ArgCnt, char* APP_ArgVal[])*/
./ZftMakeTuple_000_mw.exe ./ZftMakeTuple_000_mw.exe
./ZftMakeTuple_000_mw_D.exe ./ZftMakeTuple_000_mw_D.exe
./ZftMakeTuple_000_mw_98.exe
./ZftMakeTuple_000_mw_98_D.exe
Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest Administrator@q381-2673 UCRT64 /e/my_CPP/ZCpp/ZCppMainTest
# date # date
@ -107,6 +156,9 @@ int main(int AI_ArgCnt, char* APP_ArgVal[])*/
g++ -o ZftMakeTuple_000.exe ZftMakeTuple_000.cpp -I../ g++ -o ZftMakeTuple_000.exe ZftMakeTuple_000.cpp -I../
g++ -o ZftMakeTuple_000_D.exe ZftMakeTuple_000.cpp -I../ -D_DEBUG g++ -o ZftMakeTuple_000_D.exe ZftMakeTuple_000.cpp -I../ -D_DEBUG
g++ -o ZftMakeTuple_000_98.exe ZftMakeTuple_000.cpp -I../ -D__CPP_1998__
g++ -o ZftMakeTuple_000_98_D.exe ZftMakeTuple_000.cpp -I../ -D__CPP_1998__ -D_DEBUG
sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ gcc --version sauron@q381-2673:/mnt/e/my_CPP/ZCpp/ZCppMainTest$ gcc --version
gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0 gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0
Copyright (C) 2019 Free Software Foundation, Inc. Copyright (C) 2019 Free Software Foundation, Inc.
@ -145,4 +197,7 @@ int main(int AI_ArgCnt, char* APP_ArgVal[])*/
./ZftMakeTuple_000.exe ./ZftMakeTuple_000.exe
./ZftMakeTuple_000_D.exe ./ZftMakeTuple_000_D.exe
./ZftMakeTuple_000_98.exe
./ZftMakeTuple_000_98_D.exe
////////////////////////////////////////////////////////////////////////////////////////*/ ////////////////////////////////////////////////////////////////////////////////////////*/