公司内部框架有如下类定义:
class SomeComputeClass {
public:
using SomeType = comm:HighPerfMap<std::sharded_ptr<std::vector<int>>,uint64_t,int>
using CacheKeyType = typename SomeType:key;
//后面还有类型依赖 CacheKeyType
};
这里框架实现的时候 SomeType 将类型写死了,现在新增加了业务,需要新增一种类型,需要根据运行时传入的配置决定是用原来的 SomeType 类型,还是新增的类型。 本意是想实现:
class SomeComputeClass {
public:
if(业务 == A){
using SomeType = comm:HighPerfMap<std::sharded_ptr<std::vector<int>>,uint64_t,int>
}else {
using SomeType = comm:HighPerfMap<std::sharded_ptr<std::vector<int>>,int,int,int,int,int>
}
using CacheKeyType = typename SomeType:key;
//后面还有类型依赖 CacheKeyType
};
但运行时拿到的业务类型,编译时如何搞定呢? 请教各位有没有好的方法实现?