是否有 std::function 的独立实现?

2022-01-25 00:00:00 functional-programming embedded c++ stl

我正在开发嵌入式系统,因此代码大小是一个问题.使用标准库将我的二进制大小增加了大约 60k,从 40k 增加到 100k.我想使用 std::function,但我不能证明它是 60k 的.是否有我可以使用的独立实现,或类似的东西?我正在使用它在 c++ 11 中使用绑定变量在成员函数中隐式转换 lambda.

I'm working on an embedded system, so code size is an issue. Using the standard library ups my binary size by about 60k, from 40k to 100k. I'd like to use std::function, but I can't justify it for 60k. Is there a standalone implementation that I can use, or something similar? I'm using it to implicitly cast lambdas in member functions with bound variables in c++ 11.

推荐答案

60k 来自编译器添加的异常处理,因为 std::function 需要异常.std::function 只抛出一个异常,bad_function_call".所以我删除了引发异常的代码,现在如果调用一个空函数,它会出现错误,我为自己节省了 60k.

The 60k came from exception handling being added by the compiler, because exceptions were required for std::function. std::function only throws one exception, "bad_function_call". So I removed the code that threw the exception, now it seg faults if an empty function is called, and I saved myself 60k.

相关文章