由于我不断地需要查看自己(旧代码)关于那个问题的内容,我决定制作一个GIT要点和编译样例,允许(至少是我)快速访问一些“模板”代码(双关语),以便使用元编程条件类型选择功能进行操作(也适用于“旧”的c++03标准):
选择器声明:
template<typename FalseType, typename TrueType, bool condition>
struct ConditionalTypeSelector {
typedef void ResultType;
};
选择器专业化:
template<typename FalseType, typename TrueType>
struct ConditionalTypeSelector<FalseType,TrueType,false> {
typedef FalseType ResultType;
};
template<typename FalseType, typename TrueType>
struct ConditionalTypeSelector<FalseType,TrueType,true> {
typedef TrueType ResultType;
};
选定类型:
struct A {
unsigned char member;
};
struct B {
int member;
};
struct C {
long long member;
};
测试:
#include <iostream>
#include <typeinfo>
using namespace std;
int main()
将这个template
更改为使用例如enum
类型进行专门选择,或者应该在编译时检查的任何其他常量条件都很容易。
class A
或class B
的typedef
,并将其针对您想要的条件进行true
或false
的特化。 - πάντα ῥεῖ