Warum stürzt dieser Code ab?C++ 11: std :: bind stürzt ab mit 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;
}
Beim Konvertieren des Ergebnisses der binden an jobFunctor
dort in einem std::function
Konstruktor eine unendliche Rekursion Stapel ist.
Ich arbeite mit Mac OS X 10.8.5, kompilieren ich diesen Code mit Xcode 5.0.2 mit libC++, die Compiler-Version:
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
Absturz auf gcc 4.8 und clang 3.4 auf Linux oder gcc 4.8.1 unter Windows. – Rapptz
Dies stürzt auch unter OS X 10.9.1 ab. In diesem Fall ist der Segmentierungsfehler darauf zurückzuführen, dass der Stapel mit einer unendlichen Anzahl von rekursiven Funktionsaufrufen in std :: bind überläuft. –
Es sollte gut funktionieren: http://ideone.com/GXGIBx – Snps