散分,会友。

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

本帖 300 分已经是我能给出的上限了,预计一半给 supermegaboy,剩余的平均散出。
本帖散分对象截止于 supermegaboy 第一次回复或 100 楼。那个先出现就以那个为准。
...全文
991 点赞 收藏 87
写回复
87 条回复
切换为时间正序
请发表友善的回复…
发表回复
现在ing 2015-06-29
回复
clpppi 2015-06-29
好人啊,帮顶
回复
cutter_point 2014-05-25
回复
膜拜大神
回复
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
还来的及么
回复
zjq9931 2013-08-22
看了帖子后,我发现我的水平还是差老远了。 至少在模板这块,是完全连边都沾不上。。。
回复
发动态
发帖子
C++ 语言
创建于2007-09-28

5.9w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
申请成为版主
社区公告
暂无公告