Почему неквалифицированный имени имени зависимого имени не находит Lambda Delclared между декларацией шаблона и экземпляC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Почему неквалифицированный имени имени зависимого имени не находит Lambda Delclared между декларацией шаблона и экземпля

Сообщение Anonymous »

Следующая программа неверна, < /p>

Код: Выделить всё

inline constexpr auto makeFoo = [](auto const& x) {
return getFoo(x);
};

inline constexpr auto getFoo = [](int const&) {
return 1;
};

int bar() {
return makeFoo(32);
}
и изменение определений makefoo и getfoo делает это правильным.
Я понимаю, что на основе «неформального» понимания двухфазовых имен is a generic lambda, and getFoo in its body is invoked on an argument whose type is not known yet, so the name getFoo can't be looked up yet;
when the call makeFoo(32) is seen, the lambda's operator() is intantiated with auto = int, so the second-phase lookup Для неквалифицированного имени Getfoo < /code> происходит; < /li>
Это, однако, только ADL, поэтому он не найдет getFoo < /code>, потому что это название лямбды, а не функции. Объяснение?>

Подробнее здесь: https://stackoverflow.com/questions/795 ... -delclared
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»