返回信息流请帮忙看看这个问题。
这是一条镜像帖。来源:北邮人论坛 / cpp / #84733同步于 2014/12/13
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
请大神帮忙看看
lfny
2014/12/13镜像同步29 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
1是的
2 错的,有歧义,T无法推断到底是char*还是const char*
【 在 lfny (白色T恤) 的大作中提到: 】
: 请帮忙看看这个问题。
: [upload=1][/upload]
通过『我邮2.0』发布
既然1是一样的'那么2就应该没有错啊
【 在 renwotao 的大作中提到: 】
: 1是的
: 2 错的,有歧义,T无法推断到底是char*还是const char*
:
: ...................
你回复的我另一个帖子说要么同为char*要么同为const char*意思不就是T包含const吗?怎么这里第一个问题回答又是是的?
【 在 renwotao 的大作中提到: 】
: 1是的
: 2 错的,有歧义,T无法推断到底是char*还是const char*
:
: ...................
我插句话吧,关于类型加上cv限定符,判断起来可能跟看起来不一样,比如第一句具化为int comp(char *const &lhs, char *const &rhs),注意const的位置, 第二句具化为int comp(const char *const &lhs, const char *const &rhs);而第三句具化为int comp(char *const &lhs, const char *const &rhs)显然两个参数的T不同,所以具化失败。第四句也是一样的。
大神,我非常想知道第一个调用中的T是什么?第二个调用中的T是什么?能帮忙直接回答这个问题吗?
【 在 gaoweiwei 的大作中提到: 】
: 我插句话吧,关于类型加上cv限定符,判断起来可能跟看起来不一样,比如第一句具化为int comp(char *const &lhs, char *const &rhs),注意const的位置, 第二句具化为int comp(const char *const &lhs, const char *const &rhs);而第三句具化为int comp(char *const &lhs, const char *const &rhs)显然两个参数的T不同,所以具化失败。第四句也是一样的。
来自「北邮人论坛手机版」
1,2推断的T不一样
const T中的const是修饰T的,所以1中的const T编译为char const *,2中的const T编译为const char const *
这两问涉及两个知识点:
1.函数模板在某次实例化的时候,一个模板参数只能实例化成一种数据类型,三和四两个传入实参参数类型不同,T不知道要实例化成那种,错;要是函数模板参数改成两个,template <typename T,typename U> comp……(……T&,……U&)3,4应该就不会报错了。
2.指向常量的指针,指向常量的常指针的区别。
发自「贵邮」
1这里就是第一个问题啊2是第二个问题啊
【 在 lfny (白色T恤) 的大作中提到: 】
: 既然1是一样的'那么2就应该没有错啊
通过『我邮2.0』发布