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

"使用"声明可以与模板一起使用吗?

如何解决《"使用"声明可以与模板一起使用吗?》经验,为你挑选了1个好方法。



1> Johannes Sch..:

你链接的是using指令.using声明可以与模板化的基类一起使用(在标准中没有查找它,但只是用编译器测试它):

template struct c1 { 
    void foo() { std::cout << "empty" << std::endl; } 
}; 

template struct c2 : c1 { 
    using c1::foo; 
    void foo(int) { std::cout << "int" << std::endl; } 
}; 

int main() { 
    c2 c;
    c.foo();
    c.foo(10); 
}

编译器正确地找到无参数foo函数,因为我们的using声明将其重新声明为范围c2,并输出预期结果.

编辑:更新了问题.这是更新的答案:

文章是正确的,你不允许使用template-id(模板名称和参数).但是你可以放一个模板名称:

struct c1 { 
    template void foo() { std::cout << "empty" << std::endl; } 
}; 

struct c2 : c1 { 
    using c1::foo; // using c1::foo<10> is not valid
    void foo(int) { std::cout << "int" << std::endl; } 
}; 

int main() { 
    c2 c;
    c.foo<10>();
    c.foo(10); 
}

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