Вопросы по теме 'name-lookup'

Почему ADL не находит шаблоны функций?
Какая часть спецификации C++ ограничивает поиск, зависящий от аргумента, поиском шаблонов функций в наборе связанных пространств имен? Другими словами, почему последний вызов в main ниже не компилируется? namespace ns { struct foo {};...
4769 просмотров

Ошибочный частный базовый класс недоступен?
Компиляция этого кода с использованием g++ 4.2.1: struct S { }; template<typename T> struct ST { }; template<typename BaseType> class ref_count : private BaseType { }; template<typename RefCountType> class rep_base : public...
1221 просмотров

виртуальный метод ведет себя по-разному с множественным наследованием
почему это работает struct Base { virtual void visit(const A &) { }; virtual void visit(const B &) { }; } и это жалуется на двусмысленность при вызове метода посещения template< typename T > struct X { virtual...
82 просмотров

Я не понимаю 3.4/2 в стандарте
Я не понимаю 3.4/2 в стандарте: Имя, «просматриваемое в контексте выражения», просматривается как неполное имя в области, в которой находится выражение. Что, если имя квалифицировано как N::i ниже? #include <iostream>...
189 просмотров

Неоднозначный поиск имени с директивой использования
Не допускается помещать пространство имен и класс с одинаковым именем в одну декларативную область, т.е. namespace A {} class A{}; неверный формат (см. §3.3.1/4). Однако можно ввести имя любого из них с помощью директивы использования:...
1862 просмотров

Как работает поиск неквалифицированного имени при использовании объявлений использования?
Это неправильно или правильно сформировано в соответствии со стандартом С++? namespace M { struct i {}; } namespace N { static int i = 1; } using M::i; using N::i; int main() { sizeof (i); } Clang отклоняет его, а GCC принимает. Согласно...
633 просмотров

ошибка определения универсального возвращаемого типа в C++11
В контексте приложения C++14 я использую схему, которую можно продолжить следующим образом (минимальный воспроизводимый тест): template <class Container> struct LocateFunctions { auto get_it() const // <-- here is the problem {...
273 просмотров
schedule 11.05.2022

Тип возврата условного оператора и двухэтапный поиск
Рассмотрим следующий фрагмент: struct Base { }; struct Derived : Base { }; void f(Base &) { std::cout << "f(Base&)\n"; } template <class T = int> void g() { Derived d; f(T{} ? d : d); // 1 } void f(Derived &) {...
1116 просмотров

Различия в поиске имен между g++ и MSVS
Рассмотрим этот код: #include <iostream> namespace N { class A {}; void f(A a) { std::cout << "N::f\n"; } } void f(int i) { std::cout << "::f\n"; } template <typename T> class Base { public: void f(T x) {...
580 просмотров

C++ Ошибка поиска имени перегруженной функции
Я столкнулся со странной ошибкой при поиске имени в C++. Ошибку можно воссоздать, используя следующий минимальный пример: #include <vector> #include <iostream> std::ostream& operator<<(std::ostream& out, const...
194 просмотров
schedule 27.01.2023

Несоответствие в поиске имени среди разных компиляторов
Прежде всего, не стесняйтесь предлагать лучшее название для этого вопроса. Рассмотрим следующую программу: #include <numeric> namespace N { class C {}; } int operator+( int i, N::C ) { return i+1; } int main() { N::C a[10];...
124 просмотров