Лямбда не должна быть операндом для decltype или typeid
Лямбда не должна быть операндом для decltype или typeid.
Согласно стандарту C++, тип лямбда-выражения является уникальным, безымянным типом класса. Поскольку тип уникален, другая переменная или выражение не могут иметь тот же тип. Использование decltype или typeid лямбда-выражение указывает, что ожидается, что вторая переменная или выражение будет иметь тот же тип, что и лямбда-выражение операнда.
Оба decltype и typeid возвращает тип данных операндов. Как правило, операторы используются для:
Назначьте тип другой переменной. Например:
decltype(var1) var2;
var2 с тем же типом, что и var1.Сравните типы двух переменных. Например:
(typeid(var1) == typeid(var2))
var1 и var2.Эти применения не применяются к лямбда-выражению, которое имеет уникальный тип.
Флаги средства проверки правил используют decltype и typeid с лямбда-выражениями.
Если вы ожидаете нарушения правила, но не видите его, обратитесь к разделу Нарушения стандартов кодирования не отображаются.
| Группа: Лексические конвенции |
| Категория: Обязательно, Автоматизировано |