Рассмотрим следующий код:Должен ли задерживать родовые расщепления лямбда?
int main() {
auto l = [](auto){};
void(*p)(int) = l;
}
Он работает просто отлично и с GCC и clang.
Давайте рассмотрим следующую немного измененную версию:
int main() {
auto l = [](auto...){};
void(*p)(int) = l;
}
В этом случае, лязг еще accepts it то время как GCC rejects it.
Есть ли причина, по которой этот код должен быть отклонен или это ошибка компилятора?
Я собираюсь открыть вопрос, но я хотел бы знать, если существует любое предложение, которое могло быть реализовано с помощью одного из них, а не другой.
Компилятор GCC (5.1.0) сообщает вам, что он не реализован: «извините, не реализовано: преобразование lambda, которое использует« ... »для указания функции« –
@latedeveloper Ahahah ... Я попробовал это на мобильном устройстве и сообщение об ошибке был короче (возможно, вырезано), в то время как godbolt на мобильном телефоне далеко не удобен для пользователя. Хороший улов, не видел. Итак, я не буду открывать какую-либо проблему, они уже знают это! Спасибо. Я собираюсь закрыть свой вопрос. – skypjack
Сообщение об ошибке довольно ясно, здесь нет актуального вопроса. – skypjack