C ++ 11:std :: bind与Lambda一起崩溃

皮特·瓦克

为什么此代码崩溃?

#include <iostream>
#include <functional>

int main(int argc, const char * argv[])
{
    std::function<void(int)> function = [](int)
    {
    };
    auto binding = std::bind(function, 10);

    std::function<void()> jobFunctor = binding; // crashes here with EXC_BAD_ACCESS

    return 0;
}

将绑定结果转换jobFunctor为时,在std::function构造函数中有无限的堆栈递归

我正在运行Mac OS X 10.8.5,我使用libc ++(编译器版本)使用Xcode 5.0.2编译此代码:

LO50F-04-198BX:$ clang++ --version
Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn)
Target: x86_64-apple-darwin12.5.0
Thread model: posix
比尔·林奇

我相当确定此代码应该可以工作,并且它是libc ++实现中的一个缺陷。

我已经在libc ++错误跟踪器上为您发布了一个错误报告。http://llvm.org/bugs/show_bug.cgi?id=18282

编辑:正如Casey指出的那样,此问题已在libc ++中修复。现在,您只需要等待Apple在即将发布的XCode / OS X版本中发布libc ++的更新版本。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C ++ 11:如何将std :: mem_fn和std :: bind与继承一起使用

来自分类Dev

std :: bind与std :: function一起崩溃

来自分类Dev

非静态数据成员初始化器仅与-std = c ++ 11或-std = gnu ++ 11一起提供

来自分类Dev

将C ++ 11 lambda与boost :: multi_index一起使用

来自分类Dev

警告:非静态数据成员初始化器仅与-std = c ++ 11或-std = gnu ++ 11一起提供[默认启用]

来自分类Dev

如何在C ++ 11中将std :: max与自定义比较器一起使用?

来自分类Dev

c ++ 11:std :: bind用于子类成员函数

来自分类Dev

C ++ 0x11-std :: bind和composition

来自分类Dev

C ++ 11:具有std :: thread和lambda函数的Segfault

来自分类Dev

C ++ 11将std :: unique_lock <std :: mutex>传递给lambda

来自分类Dev

C ++ 11将std :: unique_lock <std :: mutex>传递给lambda

来自分类Dev

将C ++ 11与NaCl / PNaCl一起使用

来自分类Dev

在C ++中将sprintf与std :: string一起使用

来自分类Dev

在C ++中将QPoint与std :: map一起使用

来自分类Dev

将c ++ 11 std :: function包装在另一个std :: function中?

来自分类Dev

为什么将std :: bind与lambda一起使用时会产生如此大的对象?

来自分类Dev

C ++ 11嵌套std :: conditional

来自分类Dev

C ++ 11 std :: regex替代

来自分类Dev

std :: bind如何与成员函数一起使用

来自分类Dev

Sorting a dynamically allocated, multidimensional C array with std::sort and lambda function in C++11

来自分类Dev

将通用Lambda与std :: find_if一起使用

来自分类Dev

如何使用C ++ 11 std :: bind绑定类中具有相同名称的成员函数之一

来自分类Dev

std :: bind是否会丢弃C ++ 11中参数的类型信息?

来自分类Dev

不使用std :: bind获取成员函数的c ++ 11函数包装器

来自分类Dev

C ++ 11 Lambda函数隐式转换为bool vs.std :: function

来自分类Dev

可以将C ++ 11 lambda分配给具有错误签名的std :: function

来自分类Dev

为什么C ++ 11不将lambda隐式转换为std :: function对象?

来自分类Dev

C ++ 11 Lambda函数隐式转换为bool vs.std :: function

来自分类Dev

将std :: vector <char>的一部分转换为std :: array <char,n>,c ++ 11

Related 相关文章

  1. 1

    C ++ 11:如何将std :: mem_fn和std :: bind与继承一起使用

  2. 2

    std :: bind与std :: function一起崩溃

  3. 3

    非静态数据成员初始化器仅与-std = c ++ 11或-std = gnu ++ 11一起提供

  4. 4

    将C ++ 11 lambda与boost :: multi_index一起使用

  5. 5

    警告:非静态数据成员初始化器仅与-std = c ++ 11或-std = gnu ++ 11一起提供[默认启用]

  6. 6

    如何在C ++ 11中将std :: max与自定义比较器一起使用?

  7. 7

    c ++ 11:std :: bind用于子类成员函数

  8. 8

    C ++ 0x11-std :: bind和composition

  9. 9

    C ++ 11:具有std :: thread和lambda函数的Segfault

  10. 10

    C ++ 11将std :: unique_lock <std :: mutex>传递给lambda

  11. 11

    C ++ 11将std :: unique_lock <std :: mutex>传递给lambda

  12. 12

    将C ++ 11与NaCl / PNaCl一起使用

  13. 13

    在C ++中将sprintf与std :: string一起使用

  14. 14

    在C ++中将QPoint与std :: map一起使用

  15. 15

    将c ++ 11 std :: function包装在另一个std :: function中?

  16. 16

    为什么将std :: bind与lambda一起使用时会产生如此大的对象?

  17. 17

    C ++ 11嵌套std :: conditional

  18. 18

    C ++ 11 std :: regex替代

  19. 19

    std :: bind如何与成员函数一起使用

  20. 20

    Sorting a dynamically allocated, multidimensional C array with std::sort and lambda function in C++11

  21. 21

    将通用Lambda与std :: find_if一起使用

  22. 22

    如何使用C ++ 11 std :: bind绑定类中具有相同名称的成员函数之一

  23. 23

    std :: bind是否会丢弃C ++ 11中参数的类型信息?

  24. 24

    不使用std :: bind获取成员函数的c ++ 11函数包装器

  25. 25

    C ++ 11 Lambda函数隐式转换为bool vs.std :: function

  26. 26

    可以将C ++ 11 lambda分配给具有错误签名的std :: function

  27. 27

    为什么C ++ 11不将lambda隐式转换为std :: function对象?

  28. 28

    C ++ 11 Lambda函数隐式转换为bool vs.std :: function

  29. 29

    将std :: vector <char>的一部分转换为std :: array <char,n>,c ++ 11

热门标签

归档