相关疑难解决方法(0)

Fast Delegate(等)背后的想法是否用于优化std :: function?

已经提出了C++"委托"的建议,其开销低于boost::function:

是否已将这些想法用于实施std::function,从而产生更好的性能boost::function?有谁比较过std::functionvs 的表现boost::function

我想知道这个特别适用于英特尔64位架构上的GCC编译器和libstdc ++,但欢迎其他编译器的信息(例如Clang).

c++ performance boost c++11 std-function

22
推荐指数
1
解决办法
2788
查看次数

在地图中使用reference-to-lambda作为比较器(正确的方法?)

我想使用lambda作为自定义比较器std::map但不幸的是Visual Studio 2013编译器不允许使用这样的简单代码:

auto cmp = [](int l, int r) { return l < r; };
std::map<int, int, decltype(cmp)> myMap(cmp);
myMap[1] = 1;
Run Code Online (Sandbox Code Playgroud)

并失败了

错误C3497:您无法构造lambda的实例

似乎此代码在GCC 5.1和Visual Studio 2015中正常工作(使用ideoneVC++在线编译器进行检查 ).但对于VS2013,其中一个解决方案是使用此处提出的参考(注意auto&):

auto& cmp = [](int l, int r) { return l < r; };
std::map<int, int, decltype(cmp)> myMap(cmp);
myMap[1] = 1;
Run Code Online (Sandbox Code Playgroud)

很明显,由于绑定非const引用到临时,GCC不编译这个,而VS2015发出关于使用非标准扩展的警告.也可以使用const引用,但是下面的代码将不会编译(注意可变 - 我通过使用有状态比较器来扩展它):

int compCounter = 0;
const auto& cmp = [&compCounter](int l, int r) mutable { ++compCounter; return …
Run Code Online (Sandbox Code Playgroud)

c++ lambda c++11

11
推荐指数
2
解决办法
748
查看次数

标签 统计

c++ ×2

c++11 ×2

boost ×1

lambda ×1

performance ×1

std-function ×1