Вопросы по теме '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 просмотров
schedule
21.09.2022
3.4.2 Поиск имени в зависимости от аргумента из n3290 Draft
Пункт из проекта ISO n3290, раздел 3.4.2, пункт 1:
Когда постфиксное-выражение в вызове функции является неполным идентификатором , можно искать другие пространства имен, не учитываемые при обычном неквалифицированном поиске, и в этих...
393 просмотров
schedule
11.06.2023
Разрешение области действия для создания экземпляра шаблона
У меня есть следующий набор классов (минимальная репликация моей реальной ситуации):
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 просмотров
schedule
05.10.2022
Поиск имени функции друга в локальном классе
Компиляция следующего:
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 просмотров
schedule
07.05.2022
Поиск имени для перегруженных функций, определенных позже
Я заметил странное поведение в отношении поиска функций, когда полагался на функцию, которая будет определена позже:
#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 просмотров
schedule
21.05.2022
Странное поведение объявления использования
см. следующий код
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 просмотров
schedule
12.04.2022
Специальное поведение decltype оператора вызова для неполных типов
Я боролся с проблемой компиляции и смог сократить проблему до небольшого сегмента кода.
Чтобы подготовить почву, я пытаюсь выполнить CRTP, где базовый метод вызывает другой в производном классе. Сложность в том, что я хочу использовать конечные...
573 просмотров
schedule
26.12.2023
Определение функции в классе требует такой же функции в другом классе: ошибка компиляции
У меня есть класс перечисления Suit и я определил строку функции to_string(Suit e)
В другом классе, Card, у меня есть переменная-член my_Suit и функция-член to_string. Эта функция вызывает функцию to_string с параметром my_Suit.
При компиляции...
32 просмотров
schedule
01.08.2022
Использование 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