Почему MSVC Class 'Class' не Find Friend Function через ADL, предпочитая звонить Lambda?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Почему MSVC Class 'Class' не Find Friend Function через ADL, предпочитая звонить Lambda?

Сообщение Anonymous »

Файл CPP и два заголовка в конечном итоге образовали эту «проблемную» блок перевода: < /p>

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

namespace na {
struct Foo {
friend int getFoo(Foo const&, int const&) {
return 1;
}
};
inline constexpr auto makeFoo = [](auto const& sys) {
return [sys]{
return getFoo(sys, 0);
};
};
}

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

namespace nc {
int bar() {
return na::makeFoo(na::Foo{})();
}
}
Проблемный находится в кавычках, потому что, хотя MSVC отказывается от него, GCC и Clang, кажется, в порядке с этим кодом, и я хотел бы понять, какой компилятор правильно. Foo ; Кроме того, это не противоречит объекту лямбда getfoo , потому что они не в одном и том же пространстве имен. />
(¹) Действительно, этого достаточно, чтобы переместить эту лямбду внутри пространства имен na {< /code>, и мы получаем ожидаемое переопределение 'getfoo' как разные виды символа < /code> на все три компиляции. Исправляет проблему.
Другое решение было бы (и, возможно, все еще полезно сделать это), чтобы сделать это Makefoo не общая лямбда, изменяя Auto на foo , таким образом, вынуждая поиск для Getfoo .>

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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Почему MSVC Class 'Class' не Find Friend Function через ADL, предпочитая звонить Lambda?
    Anonymous » » в форуме C++
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Почему MSVC Class 'Class' не Find Friend Function через ADL, предпочитая звонить Lambda?
    Anonymous » » в форуме C++
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Почему MSVC Class 'Class' не Find Friend Function через ADL, предпочитая звонить Lambda?
    Anonymous » » в форуме C++
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Приложение Function Function Function не может найти функцию на AWS Lambda
    Anonymous » » в форуме JAVA
    0 Ответы
    0 Просмотры
    Последнее сообщение Anonymous
  • Overloading template friend function
    Anonymous » » в форуме C++
    0 Ответы
    183 Просмотры
    Последнее сообщение Anonymous

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