当前位置:  开发笔记 > 编程语言 > 正文

模板参数如何解析/推导?

如何解决《模板参数如何解析/推导?》经验,为你挑选了1个好方法。

在学习和试验模板时,我遇到了一些我无法完全掌握的东西.

class sample
{
    public:
        sample(int a = 0) {}
};

template 
void add(T1 a) // Replace T1 with T2 resolves compilation error.
{}

int main()
{
    add(3); 
    return 0;
}

上面的代码导致编译错误(03和c ++ 0x).但是当我将添加的参数类型从T1更改为T2时,它就可以了.对于nm,创建的原型是add(sample,int)[T1 = sample,T2 = int].为什么编译失败,T1作为参数类型而不是T2?



1> zvone..:

有两种方法可以指定模板参数:显式或隐式.

这将是明确的:

template
void do_something(T value) {};

do_something(6);  // T is float

这将是隐含的:

int x;

do_something(x);  // since first argument is T and x is int, T is int

在你的情况下:

template  void add(T1 a);
add(3);  // T1 is explcitly sample, T2 is unknown

案例2:

template  void add(T2 a);
add(3);  // T1 is explcitly sample, T2 is implicitly int

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有