散分,会友。

ri_aje 2013-08-21 06:13:53
最近有一帖关于 c++ 类型识别的问题,原帖在此(http://bbs.csdn.net/topics/390553910)。由于该帖楼主为人爽快,迅速结贴,因此 supermegaboy 给出的精彩回答未能有机会得分。与其交流使我对 c++ 有了进一步的认识,特此单发一帖,希望 supermegaboy 前来回复,以补前帖无分之遗憾。其他愿意回帖者,我亦会借此机会散分。

本帖 300 分已经是我能给出的上限了,预计一半给 supermegaboy,剩余的平均散出。
本帖散分对象截止于 supermegaboy 第一次回复或 100 楼。那个先出现就以那个为准。
...全文
1056 87 打赏 收藏 转发到动态 举报
写回复
用AI写文章
87 条回复
切换为时间正序
请发表友善的回复…
发表回复
现在ing 2015-06-29
  • 打赏
  • 举报
回复
clpppi 2015-06-29
  • 打赏
  • 举报
回复
好人啊,帮顶
cutter_point 2014-05-25
  • 打赏
  • 举报
回复
菜鸟程序猿12 2014-03-26
  • 打赏
  • 举报
回复
膜拜大神
ri_aje 2013-08-23
  • 打赏
  • 举报
回复
引用 61 楼 supermegaboy 的回复:
这么少哇,那就请楼主从偶那再拿五十分出来分给他们吧。
gotcha, 200 整除不了楼数,就搞了个最大整数。
ri_aje 2013-08-23
  • 打赏
  • 举报
回复
引用 79 楼 supermegaboy 的回复:
[quote=引用 77 楼 mougaidong 的回复:] 我说的递归的意思,应该是“递推”,让它自己去deduce,而不是遍历省略号。 标准虽说没有规定,但是在常见的编译器下,C里面的...除了用va_list,我们还能对它做什么呢?
明白你的意思了,就是希望提供这样一个语言设施,一次把所有实参解析到缓冲中,直接从缓冲中爱取哪个就哪个。我觉得这个主意不错啊,简化了代码,提高了性能,而由于编译器知道实参的数量,实现起来应该不会有不可解决的障碍(存在的问题是值不值得?成本是否过高?),类型检查应该也可以做到,因为编译器知道实参的类型。 当然现在的语言标准还没有这样的语言设施,兴许可以向wg14提一下意见。[/quote] 没看明白你们在说什么。如果我猜的正确的话,你说的这个不需要语言扩展,现在的机制应该就能够做到了,不过写起来可能会费点儿劲。
在河之洲 2013-08-22
  • 打赏
  • 举报
回复
100楼还没到哈 平坦每个人1.5分
飞天御剑流 2013-08-22
  • 打赏
  • 举报
回复
冒泡,取分顺便提醒一下31楼,现眼二字前面漏了丢人两个字。
飞天御剑流 2013-08-22
  • 打赏
  • 举报
回复
晕,wg14是C的,C++是wg21
飞天御剑流 2013-08-22
  • 打赏
  • 举报
回复
引用 77 楼 mougaidong 的回复:
我说的递归的意思,应该是“递推”,让它自己去deduce,而不是遍历省略号。 标准虽说没有规定,但是在常见的编译器下,C里面的...除了用va_list,我们还能对它做什么呢?
明白你的意思了,就是希望提供这样一个语言设施,一次把所有实参解析到缓冲中,直接从缓冲中爱取哪个就哪个。我觉得这个主意不错啊,简化了代码,提高了性能,而由于编译器知道实参的数量,实现起来应该不会有不可解决的障碍(存在的问题是值不值得?成本是否过高?),类型检查应该也可以做到,因为编译器知道实参的类型。 当然现在的语言标准还没有这样的语言设施,兴许可以向wg14提一下意见。
独自听枫 2013-08-22
  • 打赏
  • 举报
回复
turing-complete 2013-08-22
  • 打赏
  • 举报
回复
我说的递归的意思,应该是“递推”,让它自己去deduce,而不是遍历省略号。 标准虽说没有规定,但是在常见的编译器下,C里面的...除了用va_list,我们还能对它做什么呢?
引用 75 楼 supermegaboy 的回复:
[quote=引用 74 楼 mougaidong 的回复:] 我们有必要编译时断言一下U 和 T 的可比较性,或者进行此类的检查吗?
无此必要,因为const T& Max( const T& first, const T& second )限定了T和U一定是相同的,除非你手痒提供不相同的实现。
引用 74 楼 mougaidong 的回复:
另外,C++11 支持variadic function 吗? 我指的是递归实现的,不是通过va_list
递归实现的可变参函数?这个东西偶第一次听到,劳烦你解释一下是什么意思,查了一下标准,标准没有规定如何实现省略号,意即你能实现出来就行了,不管你用什么方法。[/quote]
小龙王2010 2013-08-22
  • 打赏
  • 举报
回复
Xomic 2013-08-22
  • 打赏
  • 举报
回复
我只留一言,这样不会多给了....
飞天御剑流 2013-08-22
  • 打赏
  • 举报
回复
引用 74 楼 mougaidong 的回复:
我们有必要编译时断言一下U 和 T 的可比较性,或者进行此类的检查吗?
无此必要,因为const T& Max( const T& first, const T& second )限定了T和U一定是相同的,除非你手痒提供不相同的实现。
引用 74 楼 mougaidong 的回复:
另外,C++11 支持variadic function 吗? 我指的是递归实现的,不是通过va_list
递归实现的可变参函数?这个东西偶第一次听到,劳烦你解释一下是什么意思,查了一下标准,标准没有规定如何实现省略号,意即你能实现出来就行了,不管你用什么方法。
turing-complete 2013-08-22
  • 打赏
  • 举报
回复
我们有必要编译时断言一下U 和 T 的可比较性,或者进行此类的检查吗? 另外,C++11 支持variadic function 吗? 我指的是递归实现的,不是通过va_list
引用 72 楼 supermegaboy 的回复:
[quote=引用 64 楼 mougaidong 的回复:]
template <typename T>
const T& Max(const T& first, const T& second, const T& ...) {
}
这个函数(或者类似签名也行)能够用varadic template 实现吗? ps. 使用 std::max_element 时,需要先构造一个容器,这很难用,我想直接一点。
函数模板也支持可变参模板,我估计你应该是卡在如何设置终止条件和如何声明parameter pack上了,可以如下做:

template< typename T >
const T& Max( const T& first, const T& second )
{
    return first > second ? first : second;
}

template <typename T, typename... U >
const T& Max(const T& first, const T& second, const U&... others )
{
    return Max( Max( first, second ), others... );
}
[/quote]
飞天御剑流 2013-08-22
  • 打赏
  • 举报
回复
引用 67 楼 zhao4zhong1 的回复:
[quote=引用 59 楼 supermegaboy 的回复:] 冒泡,取分顺便提醒一下31楼,现眼二字前面漏了丢人两个字。
不能流芳百世,也要遗臭万年![/quote] 我靠,你还想遗臭万年啊???
飞天御剑流 2013-08-22
  • 打赏
  • 举报
回复
引用 64 楼 mougaidong 的回复:
template <typename T>
const T& Max(const T& first, const T& second, const T& ...) {
}
这个函数(或者类似签名也行)能够用varadic template 实现吗? ps. 使用 std::max_element 时,需要先构造一个容器,这很难用,我想直接一点。
函数模板也支持可变参模板,我估计你应该是卡在如何设置终止条件和如何声明parameter pack上了,可以如下做:

template< typename T >
const T& Max( const T& first, const T& second )
{
    return first > second ? first : second;
}

template <typename T, typename... U >
const T& Max(const T& first, const T& second, const U&... others )
{
    return Max( Max( first, second ), others... );
}
signforlin 2013-08-22
  • 打赏
  • 举报
回复
还来的及么
  • 打赏
  • 举报
回复
看了帖子后,我发现我的水平还是差老远了。 至少在模板这块,是完全连边都沾不上。。。
加载更多回复(62)

64,670

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧