公司内部框架有如下类定义:
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
};
但运行时拿到的业务类型,编译时如何搞定呢? 请教各位有没有好的方法实现?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.