洛谷日报历年目录
  • 板块学术版
  • 楼主洛谷
  • 当前回复13917
  • 已保存回复13949
  • 发布时间2018/7/3 12:07
  • 上次更新2025/3/21 17:23:58
查看原帖
洛谷日报历年目录
3
洛谷楼主2018/7/3 12:07
2018/7/3 12:07
11751
ComeIntoPower小圆2018/8/6 23:59

@tomtom

或许您需要更多的例子?

2018/8/6 23:59
49742
ouuan2018/8/7 07:46

decltype一般用于模板函数,如:

template <typename T>
T sum(T& a,T& b)
{
	return a+b;
}

但这样的话两个变量必须类型相同,所以可以这样写:

template <typename A,typename B>
auto sum(A& a,B& b) ->decltype(a+b)
{
	return a+b;
}

因为声明函数的时候不知道返回值的类型,必须后置返回类型。

e.g.

#include <iostream>

using namespace std;

template <typename A,typename B>
auto sum(A& a,B& b) ->decltype(a+b)
{
	return a+b;
}

int main()
{
	int a=1;
    long long b=2;
    long double c=3.0;
    auto d=sum(a,b);
    auto e=sum(a,c);
    auto f=sum(b,c);
    cout<<d<<' '<<sizeof(d)<<endl<<e<<' '<<sizeof(e)<<endl<<f<<' '<<sizeof(f)<<endl;
    cout<<7/d<<endl<<7/e<<endl<<7/f;
    return 0;
}

output:

(CF IDE)

3 8
4 12
5 12
2
1.75
1.4

(Luogu IDE)

3 8
4 16
5 16
2
1.75
1.4

(有这个差别是因为不同平台的long double位数不同)

2018/8/7 07:46
22696
WuTianming2018/8/7 08:22

ni-fou-zhi-dao-di-c-yu-fa

滑稽

2018/8/7 08:22
49206
Dispwnl2018/8/7 10:28

luogu日报咕了4天了QAQ

2018/8/7 10:28
81362
xsssg6662018/8/7 10:56

后排滋磁

2018/8/7 10:56
80974
YLZZZ2018/8/7 11:17

滋滋滋

2018/8/7 11:17
83547
LCuter2018/8/7 11:28
70502
Kujolord2018/8/7 11:53

楼上都太强了%%%

2018/8/7 11:53
20791
封禁用户2018/8/7 12:50

@ComeIntoPower 我的Splay简易教程更新了,求复审。

2018/8/7 12:50
11751
ComeIntoPower小圆2018/8/7 13:18

@tiger0132

感谢投稿,正式加入候选队列

2018/8/7 13:18