Код: Выделить всё
import a;
int main() {
bar(1);
}
Код: Выделить всё
export module a;
namespace N {
struct adl_tag {};
void foo(adl_tag, auto) {}
} // namespace N
export void bar(auto v) {
return foo(N::adl_tag{}, v);
}
Ссылка Godbolt: https://godbolt.org/z/6Waqbj6zh
clang 21 прекрасно компилирует этот проект, но gcc 15 завершается с ошибкой:
Код: Выделить всё
In instantiation of ‘void bar@a(auto:2) [with auto:2 = int]’:
error: ‘foo’ was not declared in this scope
Подробнее здесь: https://stackoverflow.com/questions/798 ... -using-adl
Мобильная версия