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