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

Проблема GCC: использование члена базового класса, который зависит от аргумента шаблона
Следующий код компилируется не с gcc, а с Visual Studio: template <typename T> class A { public: T foo; }; template <typename T> class B: public A <T> { public: void bar() { cout << foo << endl; } }; Я...
7524 просмотров

3.4.2 Поиск имени в зависимости от аргумента из n3290 Draft
Пункт из проекта ISO n3290, раздел 3.4.2, пункт 1: Когда постфиксное-выражение в вызове функции является неполным идентификатором , можно искать другие пространства имен, не учитываемые при обычном неквалифицированном поиске, и в этих...
393 просмотров

Разрешение области действия для создания экземпляра шаблона
У меня есть следующий набор классов (минимальная репликация моей реальной ситуации): namespace Parent { class A {}; namespace Nested { class A {}; } template <typename T> class B { A myA; }; } Я ожидаю, что...
425 просмотров
schedule 20.03.2023

Объявление друга о специализации шаблона не выполняется
Следующий код, содержащий объявление друга, не работает с указанной ошибкой (см. http://ideone.com/Kq5dy ): template<class T> void foo() {} template<typename T> class A { void foo(); friend void foo<T>(); // error:...
2182 просмотров

Поиск имени функции друга в локальном классе
Компиляция следующего: void bar() { /* ... */ } void foo() { struct MyStruct { friend void bar(); }; } int main() { //.. } приводит к ошибке: ошибка: объявление друга 'void bar()' в локальном классе без...
346 просмотров
schedule 09.08.2022

Использование указателя this в шаблоне зависимого производного класса
В примере pointers/countingptr.hpp из книги Шаблоны C++ — Полное руководство к элементам производного зависимого class CountingPtr обращаются с помощью указателя this . Почему this необходимо в этом примере? Я знаю, что указатель this...
680 просмотров
schedule 29.01.2023

Ошибка компиляции при перегрузке оператора‹‹ аргументами шаблона
Я пытаюсь использовать stl copy() для печати пары ключ-значение на карте. Код выглядит следующим образом: #include <iterator> #include <iostream> #include <algorithm> #include <map> using namespace std; //compile error if...
165 просмотров

Поиск имени для перегруженных функций, определенных позже
Я заметил странное поведение в отношении поиска функций, когда полагался на функцию, которая будет определена позже: #include <iostream> template <typename T> void foo(const T&) { std::cout << "Basic" <<...
93 просмотров
schedule 21.01.2023

Несоответствие компилятора: взаимодействие между разрешением псевдонима и поиском имени
Рассмотрим этот код: using type = long; namespace n { using type = long; } using namespace n; int main() { type t; } Это правильно компилируется на Clang 3.7 и GCC 5.3 , но MSVC 19 * выдает следующее сообщение об ошибке:...
153 просмотров

Странное поведение объявления использования
см. следующий код struct A { using type = int; }; struct B : private A {}; struct C : B { using base_type = A; }; Все gcc 6.1, clang 3.8 и msvc 2015 update 3 отказываются компилировать это, так как A не является доступным именем внутри C ,...
1214 просмотров

Специальное поведение decltype оператора вызова для неполных типов
Я боролся с проблемой компиляции и смог сократить проблему до небольшого сегмента кода. Чтобы подготовить почву, я пытаюсь выполнить CRTP, где базовый метод вызывает другой в производном классе. Сложность в том, что я хочу использовать конечные...
573 просмотров

Определение функции в классе требует такой же функции в другом классе: ошибка компиляции
У меня есть класс перечисления Suit и я определил строку функции to_string(Suit e) В другом классе, Card, у меня есть переменная-член my_Suit и функция-член to_string. Эта функция вызывает функцию to_string с параметром my_Suit. При компиляции...
32 просмотров

Использование decltype в спецификаторе вложенного имени
Рассмотрим следующую демонстрационную программу. #include <iostream> namespace N { struct A { static int n; }; A A; } int N::A::n = 10; int main() { std::cout << N::A::n << '\n'; std::cout...
54 просмотров
schedule 05.07.2023