bob*_*obo 2 c++ lambda serialization functor
你能保存C++ lambda/functor的函数体吗?
例如,假设你有
light0->lightFunction = []( real tEl, real pAz ) -> Vector {
return Vector(
// red is up lobe
std::max<real>( 0., 5*cos(tEl)-4 ),
// green lower lobe
std::max<real>( 0., -4*sin(tEl-PI)*cos(pAz-2.5)-3),
0. ) ;
} ;
Run Code Online (Sandbox Code Playgroud)
并且您希望保存函数体,以便稍后加载它(而不是总是需要对其进行硬编码).
你可以做到吗?
这个lambda没有状态(不是闭包),所以它是一个普通的函数.
因此保存它与保存任何功能是同一个问题.一般情况下这是不可能的,但只要你将它加载回完全相同的过程,实际上可能只需reinterpret_cast将函数指针指向a char*并读取足够数量的字节即可.但这将是非常不可移植的,并且可能在某些体系结构或某些编译器上根本不起作用.
再说一遍:没有符合标准的方法将代码视为数据.
另一方面,有一些符号表达式库允许使用普通的代码语法捕获表达式树,但是你根本没有处理一个仿函数(没有代码,只有数据).
| 归档时间: |
|
| 查看次数: |
1033 次 |
| 最近记录: |