Когда лямбда тривиальна?
Когда лямбда гарантированно будет тривиальной, если вообще?
Я предположил, что если он захватывает только тривиальные типы или ничего, это будет тривиально. У меня нет никакого стандарта, чтобы поддержать это все же.
Моя мотивация заключалась в том, чтобы переместить некоторый код из Visual C ++ с 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 и лязг. Я не мог проверить gcc из-за отсутствия gcc> = 5. Я ожидаю, что это регрессия в vs140, но я не уверен в правильном поведении здесь.