V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  constexpr  ›  全部回复第 21 页 / 共 26 页
回复总数  502
1 ... 13  14  15  16  17  18  19  20  21  22 ... 26  
2020-08-19 18:38:21 +08:00
回复了 Tony042 创建的主题 C++ C++友元函数问题
我研究了一下,我觉得这个问题大概跟友元有关,为此我写了一段极短的代码

struct Base { void f() {} };

void m(Base*) {}

template<typename T>auto v2ex(T* b) -> decltype(m(b));

struct Derived : private Base {
template<typename T> friend auto v2ex(T* d) -> decltype(m(d)); //problem HERE!!!
};

template<typename T> auto v2ex(T* d) -> decltype(m(d)) { d->f(); }

int main() {
Derived d;
v2ex(&d);
}

这段代码能在 MSVC, clang 中编译通过并运行, g++无法编译.

这段代码的问题在于, 模板函数 V2EX 是类 Derived 的友元, 故可以在 V2EX 中自由转换成类 Base. 但是 V2EX 的声明有这么一段 "decltype(m(b))" , 问题是函数 m 是否应该是类 Derived 的友元呢? 如果是的话, 我传给他一个类 Dervied 的指针,他应该在 V2EX 中能畅通无阻的转换成类 Base, clang 和 MSVC 都认为是的,所以编译通过, 而 g++认为 m 不是 Derived 的友元, m 中不允许 Derived->Base 的转换, 这就是他无法编译的原因.
对应你的代码就是 g++不认为 getHeight 是 Tuple 的友元, 所以在友元声明中 "getHeight<sizeof...(Elements) - I - 1>(t)", g++不允许 Tuple 类型的参数 t 向基类 TupleElt 的转换!!!

有几点说明一下:
■ 代码也许可以写的更短, 但是为了恰好在 MSVC 和 clang 下编译成功, 而 gcc 不成功才写的稍复杂了一点.
■ 你的代码比我这段代码复杂的多, 而且涉及递归继承, 多重继承. 虽然我不敢肯定我提到的这个问题就一定是你问题的解答, 但从 g++编译器给出的错误提示中, 大致就是我提出的这个问题.
■ 至于 ISO 标准是怎么样的, 我不清楚. 不过也能看出不同编译器对标准的解读,实现都有偏差.
2020-08-19 10:16:23 +08:00
回复了 miv 创建的主题 游戏 有好玩的解密类游戏推荐?请进!
纪念碑谷 1&2
2020-08-18 14:05:51 +08:00
回复了 b0644170fc 创建的主题 程序员 笔记本遮挡摄像头用什么东西遮挡笔记好
我的可以在 bios 禁
2020-08-18 00:50:34 +08:00
回复了 runking 创建的主题 分享发现 周鸿祎称有的软件会偷偷打开摄像头 或者麦克风录音
看了《我是谁?没有绝对安全的网络》后我就在 bios 里把摄像头和麦禁了
2020-08-17 19:55:07 +08:00
回复了 Shawn5 创建的主题 全球工单系统 腾讯的 WeGame 登陆器挂了!
我刚才也登不上,现在好了
对视窗系统而言,曾经是的。
微软早期有一些未公开的 api,还有人专门写过一本书讲这一点《 Undocumented Windows 》
2020-08-11 11:47:30 +08:00
回复了 howoldareyou2 创建的主题 问与答 关于百度网盘,非会员下载速度个位数的补充说明
各位数是有可能的。比如之前用过多线程下载网盘资源后会被官方限速制裁。
我也是最早一批用户,我特意注册了几个账号来邀请送容量!
2020-08-06 12:09:31 +08:00
回复了 hackerang 创建的主题 游戏 有什么划水游戏推荐吗?
王者荣耀,不想玩可以挂机
2020-08-04 10:08:10 +08:00
回复了 jmercer 创建的主题 问与答 送给妈妈什么生日礼物合适
洗脚木桶,很多人喜欢泡脚
2020-08-02 12:46:47 +08:00
回复了 vilic 创建的主题 游戏 有没有啥不怎么花时间也能玩开心的 PC 游戏推荐?
lol 就不花时间,不想玩了可以挂机
我只看实体书, 因为实体书翻来翻去更方便, 而且我能记住我想要找的内容在一本书的哪个地方, 是左边还是右边, 但是电子书做不到. 看电子书我都分不清哪页是哪页.
2020-07-24 15:24:59 +08:00
回复了 invdan 创建的主题 分享发现 [征名啦] 我国第一辆火星车全球征名开始
乌兹号
2020-07-24 15:06:30 +08:00
回复了 hahaFck 创建的主题 投资 炒股亏惨了
场内场外我只买基金,赚亏都不多
2020-07-14 13:43:29 +08:00
回复了 kaiki 创建的主题 奇思妙想 “把灵魂出卖给恶魔”算不算一种贷款形式。
恶灵骑士?
2020-07-14 11:47:18 +08:00
回复了 zzjie 创建的主题 互联网 收一封勒索邮件
我在 bios 里把麦和摄像头禁了,不知道有没有用
2020-07-13 15:37:59 +08:00
回复了 hisummer 创建的主题 问与答 微信的人工客服太难找!
我之前也是要好友认证,但我几年没用…
然后直接选择忘记密码,过几天腾讯客服电话来,wechat 之前绑定 Q , Q 上确认,最后官方短信给我重置后的密码
1 ... 13  14  15  16  17  18  19  20  21  22 ... 26  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   794 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 49ms · UTC 20:39 · PVG 04:39 · LAX 13:39 · JFK 16:39
Developed with CodeLauncher
♥ Do have faith in what you're doing.