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

速写c++范性

template声明下一个域存在范型

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

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

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

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

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

你可能感兴趣的:(【备忘】c++范型的种种)