use*_*459 13 c++ templates partial-specialization specialization template-specialization
我不明白为什么主要陈述含糊不清.
template<class T, class U, int I> struct X
{ void f() { cout << "Primary template" << endl; } };
template<class T, int I> struct X<T, T*, I>
{void f() { cout << "Partial specialization 1" << endl;}};
template<class T, class U, int I> struct X<T*, U, I>
{void f() { cout << "Partial specialization 2" << endl;}};
template<class T> struct X<int, T*, 10>
{void f() { cout << "Partial specialization 3" << endl;}};
template<class T, class U, int I> struct X<T, U*, I>
{void f() { cout << "Partial specialization 4" << endl;}};
int main()
{
X<int, int*, 10> f;
}
Run Code Online (Sandbox Code Playgroud)
不是X<int, T*, 10>最专业的模板吗?这是来自http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Fpartial_specialization.htm的示例.
int*_*jay 11
如果与第一个匹配的每个参数列表也与第二个匹配,则模板特化比另一个更专业,但不是相反.
看着X<int, T*, 10>和X<T, T*, I>:
X<int, float*, 10> 匹配第一个而不是第二个.X<float, float*, 10> 匹配第二个但不是第一个.因此,两者都不比另一个更专业,并且匹配两个特化的模板实例化将不会编译.
| 归档时间: |
|
| 查看次数: |
1768 次 |
| 最近记录: |