我现在开始使用模板。关于模板参数的非推导上下文的页面(在最新的c ++草案中)很难理解。你知道更容易理解和记住规则吗?
非弱势语境是:
使用qualified-id指定的类型的嵌套名称说明符。 一种类型,它是一个template-id,其中一个或多个template-arguments是一个引用模板参数的表达式。
如果以包含非弱化上下文的方式指定类型名称,则包含该类型名称的所有类型也不会受到限制。但是,复合类型可以包括推导类型和非推导类型。 [示例:如果类型指定为
A<T>::B<T2>
,则T
和T2
都不受限制。同样,如果某个类型指定为A<I+J>::X<T>
,则I
,J
和T
不会被限制。如果将类型指定为void f(typename A<T>::B, A<T>)
,则T
中的A<T>::B
未受到限制,但推导出T
中的A<T>
。 ]
对我来说这是适合初学者的东西。我无法想象如果没有对演绎的深入了解,某人能够正确理解模板。