Следует ли найти дружественную функцию в пространстве имен, отличном от класса, с помощью поиска, зависящего от аргументC++

Программы на C++. Форум разработчиков
Anonymous
Следует ли найти дружественную функцию в пространстве имен, отличном от класса, с помощью поиска, зависящего от аргумент

Сообщение Anonymous »

Подумайте

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

struct A;
namespace ns { int f(A&&); }
struct A {
friend int ns::f(A&&);
};

int x = f(A{});
Транк GCC преобразует последнюю строку в вызов ns::f(A&&) в C++20 и более поздних версиях. Clang, MSVC, EDG, GCC 15.2 (независимо от языкового стандарта), магистраль GCC в C++17 отклоняют вызов, утверждая, что они не могут найти объявление f.
демо: https://godbolt.org/z/59Pdzcc9G
Какой компилятор правильный?

Подробнее здесь: https://stackoverflow.com/questions/798 ... und-by-arg

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