Wann ist ein Lambda ein Garant für Trivialität, wenn überhaupt?Wann ist ein Lambda trivial?
Ich nahm an, dass, wenn es nur triviale Typen oder nichts erfasst, es trivial wäre. Ich habe jedoch keine Standardisierung, um das zu unterstützen.
Meine Motivation war es, etwas Code von Visual C++ 12 auf 14 zu verschieben und entdeckte einige statische Behauptungen, die beim Umgang mit Lambdas fehlschlugen, die ich für trivial hielt.
Beispiel:
#include <type_traits>
#include <iostream>
using namespace std;
int main()
{
auto lambda = [](){};
cout << boolalpha << is_trivially_copyable<decltype(lambda)>{} << endl;
}
Dies erzeugt false
auf vs140 aber true
in VS120 und Klirren. Ich konnte gcc nicht testen, da gcc> = 5 nicht vorhanden war. Ich gehe davon aus, dass dies eine Regression in vs140 ist, aber ich bin mir nicht sicher, ob das hier korrekt ist.
gcc 5.2 produziert auch 'true': [Demo] (http://coliru.stacked-crooked.com/a/a7dc4ee4e32fb70a) – Jarod42