大佬教程收集整理的这篇文章主要介绍了c外部类接口和模板,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
namespace ns { struct S {}; void sFoo(const S&) {} template<typename T> void sBar(const S&) {} } void foo() { ns::S s; sFoo(s); // ok sBar<int>(s); // error: ‘sBar’ was not declared in this scope ns::sBar<int>(s); // ok }
我尝试了显式实例化,但它没有改变任何东西(即使它会,它会比使用使用更糟糕的选择).@H_618_10@
那么为什么exacly不能在没有指定命名空间的情况下调用模板化函数(假设既不使用也不使用命名空间指令)?@H_618_10@
不相关的是,如果可以推导出模板参数,那ADL确实有效:@H_618_10@
namespace ns { template <typename T> void sZip(T &) { } } void foo() { ns::S s; sZip(s); // OK,deduces T = ns::S }
C的一般“最佳实践”是仅在可以推导出参数的情况下制作函数模板,并且永远不要明确指定参数. (此规则的例外是std :: forWARD和各种make_ *函数,它们需要一个强制参数用于所需的结果类型.)@H_618_10@
以上是大佬教程为你收集整理的c外部类接口和模板全部内容,希望文章能够帮你解决c外部类接口和模板所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。