2015-08-15 199 views
1

此代码是来自Phobos的源代码。别名模板到模板参数

// This template simply aliases itself to R and is useful for consistency in 
// generic code. 
template Take(R) 
if (isInputRange!(Unqual!R) && 
((!isInfinite!(Unqual!R) && hasSlicing!(Unqual!R)) || is(R T == Take!T))) 
{ 
    alias Take = R; 
} 

但这是什么意思/它做什么/什么时候有用?

回答

1

经过约束检查,模板实际上是一个身份函数;即is(Take!MyRange == MyRange)为真。

约束检查R是否是输入范围,以及它是无限且已切片,还是已经是Take范围。