Когда лямбда гарантирована быть тривиальной, если когда-либо?
Я предположил, что если он захватывает только тривиальные типы или ничего, это было бы тривиально. У меня нет никакого стандарта, чтобы поддержать это, хотя.
Моя мотивация заключалась в перемещении некоторого кода с Visual С++ с 12 по 14 и обнаружении каких-то статических утверждений не удалось при работе с лямбдами, которые я считал тривиальными.
Пример:
#include <type_traits>
#include <iostream>
using namespace std;
int main()
{
auto lambda = [](){};
cout << boolalpha << is_trivially_copyable<decltype(lambda)>{} << endl;
}
Это создает false
в vs140, но true
в vs120 и clang. Я не смог проверить gcc из-за отсутствия gcc >= 5. Я ожидаю, что это регресс в vs140, но я не уверен в правильном поведении здесь.