这就是type traits技法
里面定义的这个type,最后通过 ContinuationFutureType<Func, T>::type 来使用。
type的值(其值是个类型)是跟着模板参数Func、T变化的,
也就是不同的Func、T,会推导出不同的type。
变化是通过模板偏特化来实现的。可以认为等价于一个switch/case语句。
也就是实现下面的类型推导:
if (Func == func1 && T == t1)
type = type1
else if (Func == func2 && T == t2)
type = type2
else
type = typeN // 默认情况,无偏特化
具体的例子,可以搜一下type traits、模板偏特化的讲解帖子
【 在 smthxes 的大作中提到: 】
: 上下文就是上面我主贴里的代码,这段没看明白,struct ContinuationFutureType结构里好像是定义了一个类型?这是什么用法?
: template <typename Func, typename T> struct ContinuationFutureType {
: using type = Future<typename RemoveFuture<
: ...................
--
修改:z16166 FROM 114.241.228.*
FROM 114.241.228.*