Вопросы по теме 'name-lookup'
Почему ADL не находит шаблоны функций?
Какая часть спецификации C++ ограничивает поиск, зависящий от аргумента, поиском шаблонов функций в наборе связанных пространств имен? Другими словами, почему последний вызов в main ниже не компилируется?
namespace ns {
struct foo {};...
4769 просмотров
schedule
01.04.2022
Ошибочный частный базовый класс недоступен?
Компиляция этого кода с использованием 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 просмотров
schedule
04.04.2023
виртуальный метод ведет себя по-разному с множественным наследованием
почему это работает
struct Base {
virtual void visit(const A &) { };
virtual void visit(const B &) { };
}
и это жалуется на двусмысленность при вызове метода посещения
template< typename T >
struct X {
virtual...
82 просмотров
schedule
22.12.2022
Я не понимаю 3.4/2 в стандарте
Я не понимаю 3.4/2 в стандарте:
Имя, «просматриваемое в контексте выражения», просматривается как неполное имя в области, в которой находится выражение.
Что, если имя квалифицировано как N::i ниже?
#include <iostream>...
189 просмотров
schedule
12.05.2023
Неоднозначный поиск имени с директивой использования
Не допускается помещать пространство имен и класс с одинаковым именем в одну декларативную область, т.е.
namespace A {}
class A{};
неверный формат (см. §3.3.1/4). Однако можно ввести имя любого из них с помощью директивы использования:...
1862 просмотров
schedule
20.12.2023
Как работает поиск неквалифицированного имени при использовании объявлений использования?
Это неправильно или правильно сформировано в соответствии со стандартом С++?
namespace M { struct i {}; }
namespace N { static int i = 1; }
using M::i;
using N::i;
int main() { sizeof (i); }
Clang отклоняет его, а GCC принимает.
Согласно...
633 просмотров
schedule
16.08.2022
ошибка определения универсального возвращаемого типа в 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 просмотров
schedule
09.04.2024
Различия в поиске имен между 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 просмотров
schedule
04.12.2022
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 просмотров
schedule
10.02.2023