请问这段函数声明是什么意思?第二行那个箭头是干什么的?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问这段函数声明是什么意思?第二行那个箭头是干什么的?相关的知识,希望对你有一定的参考价值。

请问这段函数声明是啥意思?第二行那个箭头是干啥的?template <typename T1, typename T2>
auto compose(T1 t1, T2 t2) -> decltype(t1 + t2)

return t1+t2;

auto v = compose(2, 3.14); // v's type is double

这是c++11的特性,decltype()会自动根据括号里面的表达式推导出类型,但是要是把decltype放到compose()的前面的话,t1,t2还没定义,于是c++11就换一下规则,把它放到函数的后面,用auto来返回类型
至于箭头,auto后面都可以加箭头,箭头后面加类型
参考技术A decltype是C++11出来的东西,是声明类型的意思,
泛型编程中结合auto,用于追踪函数的返回值类型
参考技术B 先把C++ Primer好好看一下

C++中list列表中的splice函数有3中声明方式,请问这三种声明方式里面的参数表示啥意思

void splice ( iterator position, list<T,Allocator>& x );
void splice ( iterator position, list<T,Allocator>& x, iterator i );
void splice ( iterator position, list<T,Allocator>& x, iterator first, iterator last );
第一个参数我知道表示的是插入位置,第一种声明里第二个表示的是什么?是指x这整个列表吗?还有第二种声明第三个参数是什么意思?第三种声明是不是指列表X里面第first个位置到第last个位置的元素?

参考技术A std::list::splice

entire list (1)
void splice (iterator position, list& x);

single element (2)
void splice (iterator position, list& x, iterator i);

element range (3)
void splice (iterator position, list& x, iterator first, iterator last);

Transfer elements from list to list
Transfers elements from x into the container, inserting them at position.
The first version (1) transfers all the elements of x into the container.
The second version (2) transfers only the element pointed by i from x into the container.
The third version (3) transfers the range [first,last) from x into the container.
翻译:
链表拼接。
从列表中转移元素列表
将X中元素转移到容器中,在位置positon插入他们。
第一个版本(1)传输X的所有元素插入到容器中。
第二个版本(2)只转让x中由i指出的元素进入容器中。
第三个版本(3)X [first,last)传送范围到容器中。本回答被提问者采纳

以上是关于请问这段函数声明是什么意思?第二行那个箭头是干什么的?的主要内容,如果未能解决你的问题,请参考以下文章

C++中list列表中的splice函数有3中声明方式,请问这三种声明方式里面的参数表示啥意思

请问这段HTML代码的意思

linux脚本中的冒号是啥意思? 第一行:read YN , 第二行 :$YN:=yes,第三行 case $YN in ...

请问高手下面高数的符号I和J是啥意思,在那有啥作用?先谢了!

请问你的那个回退操作是怎么解决的?求指导!!!

为啥这段代码在第二行写输入?