我有一个类,它枚举模板类型的一个或多个类型的成员符号。我使用宏来克服C ++符号的缺点,以抽象出一个正交使用的类型的符号。因为我可以直接访问符号抽象,所以操作对象的性质大多无关紧要。
示例用法是:
struct MyNonTemplatedStruct
{ int Num; float FloatNum; };
template< typename SomeType >
struct MyTemplatedStruct
{ int Count; SomeType Object; };
mDeclareRTTI_Type( MyNonTemplatedStruct, Num, FloatNum );
mDeclareRTTI_Type( MyTemplatedStruct, Count, Object );
MyRTTClass<MyNonTemplatedStruct> RTTI_N;
MyRTTClass<MyTemplatedStruct> RTTI_T;
cout << RTTI_N.IDName(0); // "Num"
cout << RTTI_T.IDName(RTTI_T.Object); // "Object"
typename RTTI_N::ThisType StackMyNonTemplatedStruct;
auto HeapMyTemplatedStruct = RTTI_T.New<float>();
目前我必须拥有我的mDeclareRTTI_Type()/ mDeclareRTTI_Type_Templated_Version()的2个版本,因为我无法确定一种声明方式 一个可以适应任一专业化的模板。
template<...> //unrestricted by number, typename or non-type
MyRTTIClass {};
template< typename T>
template<> MyRTTIClass<T> {};
template< template<typename...> class Tmpl >
template<> MyRTTIClass<Tmpl> {};
模板模板参数参数重复相同的难度。即Tmpl&lt;&gt;的模板类型或非类型参数。需要每个组合的签名。我的解决方法是将这些参数限制为typename ...
有没有人知道可以克服其中一个或两个相关限制的包装系统?
这是我关于堆栈溢出的第一个问题,所以我希望我已经为问题的内容和原因提供了足够的信息。此外,升级库太大而无法考虑,但如果库有解决方案,我可以尝试从中提取它,如果我知道它解决了它。
由于