当std::ref遇到前置声明
来源:互联网 发布:手机弹古筝软件 编辑:程序博客网 时间:2024/05/30 23:34
当std::ref遇到前置声明
话说,起因是这样的:
有一个前置声明的类型
然后又一个回调函数使用了一个session_t的引用(注意,在下面这段代码能编译通过)
在这里,handler_(session,…)可以看成是一个std::function的对象,而handler的原型是
[](network::session_t &, …){};在这里handler_只需要把session以引用的方式转发出去就行了,可是在给session加上std::ref后却变异失败,如这样handler_(std::ref(session),…);编译器抱怨说,
说这个session_t不是完整类型,是的,session_t是一个前置声明,因为这里并没有用到该类型的成员,所以没必要。但是以值拷贝的方式却能编译通过。
再次看了一下std::ref的实现:如下
根据错误提示,就是std::is_abstract认为session_t不是一个完整类型。
我的疑问是,为啥按值拷贝可以呢?而又不会造成拷贝的效果?我很迷茫!
- 当std::ref遇到前置声明
- std::vector的前置声明
- std:: /前置声明/ #pragma once
- std::ref
- 前置声明
- 前置声明
- 前置声明
- 前置声明
- 前置声明
- std::ref, std::cref
- C++11 std::ref
- #include和前置声明
- 前置声明的使用
- typedef与前置声明
- C++的前置声明
- 前置声明与#include
- 关于前置声明
- 规范_前置声明
- Java保留两位小数
- spring在web.xml中和在struts中的不同配置
- mysql 表分区
- IOS 联机调试和发布程序(99$的官方证书方式
- 用Homebrew替换MacPorts
- 当std::ref遇到前置声明
- (9)观察者模式
- 使用CImage类切割png图片
- Android开发之服务连接泄露异常
- 一道面试题:140个google面试题
- CSDN第一期总结之一:Form问题
- SWFUpload 在IE9下不显示问题及IE9中模态窗下flash文件选择问题的处理
- SQL ON Teradata
- 为什么ListView.setOnItemClickListener、setOnCreateContextMenuListener会无效