【备忘】c++范型的种种

速写c++范性

template<typename/class T>声明下一个域存在范型

Q:范型/模版,意味着什么?
A: 类模版意味着类实体将生成、函数模版意味着将发生类型推导和实体生成

Q:template<class T>
void f(T&&)为什么可以接受任何类型的实参?不应该只接受右值吗?
A:当发生类型推导时,以上式f(arg)为例:
arg = 左值/左值引用 则 T = T& ,而 T& && = T&
arg = 右值/右值引用 则 T = T,故仍为T&&
总之就是,实参为左,形参为左值引用、实参为右、形参为右值引用(但不要忘了右值引用也是左值哦)
我们编写模版时希望T被推导为引用类型,因为引用几乎总是比拷贝高效

Q:remove_reference<T>是什么操作?
A:是type_traits头文件里面一些模版,它们帮助我们获得一些编译期的信息

Q:为什么要使用右值引用作为模版参数呢?
A:为了实现完美转发

Q:扩展参数包中的...是啥?
A:就是扩展符

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容