Вопросы по теме 'name-lookup'
Каково полное имя дружественной функции, определенной внутри класса?
Каково полное имя дружественной функции, определенной внутри класса?
Недавно я видел пример, аналогичный следующему. Какое полное имя val() ниже?
#include <iostream>
namespace foo {
class A {
int x;
public:...
2284 просмотров
schedule
13.11.2021
C ++ не может найти функцию вне пространства имен
Компиляция следующего кода завершается неудачно, потому что вторая функция не может найти первую, даже если она находится вне пространств имен. Сам не мог разобраться в проблеме и пока не нашел ответов в сети.
test.cpp:
#include...
564 просмотров
schedule
11.11.2021
Почему в этом случае не требуется оператор области для пространства имен std?
Я пробовал следующее:
#include <vector>
#include <algorithm>
int main ()
{
std::vector<int> myVector = {1, 2, 3, 4};
all_of(myVector.begin(), myVector.end(), [](int i){return i;});
}
ожидая ошибки компиляции,...
44 просмотров
schedule
14.11.2021
Путаница с поиском имени функции
Меня смущают некоторые правила в стандарте. Приведу их здесь:
[basic.lookup.argdep] :
Пусть X будет набором поиска, созданным с помощью неквалифицированного поиска , а Y будет набором поиска, созданным поиском, зависящим от аргументов...
89 просмотров
schedule
15.09.2021
Почему определения типов суперкласса находятся в области видимости только тогда, когда класс не является шаблоном?
Рассмотрим следующий код, упрощенный из некоторых итераторов, которые я писал:
#include <iterator>
#include <iostream>
#include <typeinfo>
#include <array>
struct NoTemplate:public...
239 просмотров
schedule
19.02.2022
Почему я получаю ошибку времени компиляции, когда указатель базового класса указывает на виртуальную функцию производного класса, объявленную в базовом классе?
У меня есть базовый класс, который имеет virtual void function1 () и переопределяется в производном классе. Кроме того, в моем производном классе есть еще одна виртуальная функция, как показано ниже.
class Base
{
public:
virtual void...
112 просмотров
schedule
18.02.2022
Разница в поведении clang и gcc при попытке запутать их, используя псевдоним шаблона с фиктивным параметром, чтобы скрыть базовый класс
Рассмотрим следующую программу на C ++:
class A
{
protected:
int x;
};
template<typename X>
using B = A;
template<typename T>
class C : public B<T>
{
public:
void f()
{
x = 0;...
101 просмотров
schedule
20.02.2022
При разрешении имен, зависящих от шаблона, не должно быть объявлений без привязки?
В стандарте c ++ [temp.point] написано:
Контекст создания экземпляра выражения, который зависит от аргументов шаблона, - это набор объявлений с внешней связью , объявленный до точки создания экземпляра специализации шаблона в той же единице...
174 просмотров
schedule
17.04.2022
Распространение typedef из базового класса в производный для шаблона
Я пытаюсь определить базовый класс, который содержит только typedef.
template<typename T>
class A
{
public:
typedef std::vector<T> Vec_t;
};
template<typename T>
class B : public A<T>
{
private:
Vec_t v; // fails...
30825 просмотров
schedule
01.05.2022
Как интерпретировать правило [namespace.udir]p2 в стандарте С++?
Меня немного смущают последствия [namespace.udir]p2. Рассмотрим следующую программу:
namespace X { int i = 1; }
namespace Y { using namespace X; }
int main() { i = 2; }
В нем поиск имени для i в main не работает (я пробовал с GCC, Clang...
50 просмотров
schedule
02.05.2022
Проблема поиска имени ADL, используется std :: swap; swap (a, b), связанный с перегрузкой функции или функцией внутренней области видимости, скрыть функцию внешней области видимости?
Я знаю, что такое ADL, и я знаю, что в C ++ функция внутренней области видимости скрывает функции внешней области. То есть имена не перегружают области действия. Таким образом, перегрузка функций должна выполняться в том же объеме.
Итак, теперь...
42 просмотров
schedule
17.06.2022
Частное наследование, возврат ссылки на статический член базового класса
У меня простой вопрос относительно наследования от класса, который частным образом наследует базовый класс, т.е. у нас есть
class Base {};
class Heir: private Base {};
class HeirsHeir : public Heir {};
Я понимаю, что HeirsHeir не может...
174 просмотров
schedule
04.07.2022
Неоднозначный поиск шаблона элемента
Ответ на этот вопрос содержится в следующем коде:
#include <vector>
using std::vector;
struct foo {
template<typename U>
void vector();
};
int main() {
foo f;
f.vector<int>(); // ambiguous!
}
Последняя строка в...
210 просмотров
schedule
13.07.2022
Неквалифицированный поиск имени, объявленного в теле функции
Я столкнулся с определением объявления:
Объявление является определением, если оно не объявляет функцию без указания тела функции.
#include <stdio.h>
void foo()
{
printf("foo\n");
}
int main()
{
void foo();
foo();
}...
39 просмотров
schedule
01.09.2022
Скрытие имени параметра шаблона
Меня недавно укусил (упрощенно)
struct Base {
typedef char T;
};
template<typename T>
struct Foo : Base {
T x[50]; // This is Base::T, not the template parameter
};
Другими словами, имя члена класса скрывает параметр шаблона...
709 просмотров
schedule
18.09.2022
Скрывает ли переопределение неконстантного виртуального метода константную перегрузку?
Рассмотреть возможность:
#include <iostream>
using namespace std;
struct A {
virtual void f() { cout << "A::f" << endl; }
virtual void f() const { cout << "A::f const" << endl; }
};
struct B : public A {};...
2652 просмотров
schedule
11.04.2023
Где стандарт С++ 98 указывает, что локально объявленные имена шаблонов не зависят?
Согласно этой странице: http://womble.decadent.org.uk/c++/template-faq.html#non-dependent «Независимые имена — это те имена, которые считаются не зависящими от параметров шаблона, плюс имя самого шаблона и имена, объявленные в нем (члены , друзья и...
205 просмотров
schedule
09.07.2023
использование пространств имен в библиотеках
Я хотел бы знать, необходимы ли полные имена в библиотеке.
Например (здесь я делаю отступ для пространств имен для удобочитаемости):
namespace A {
namespace B {
namespace C {
class Foo { ... };
} // namespace C...
101 просмотров
schedule
21.03.2023
Проблема с поиском имени, GCC и clang расходятся во мнениях
Как указал ecatmur, на этот вопрос уже есть ответ здесь .
Этот вопрос очевидно не дублирует конечный возвращаемый тип с использованием decltype с функцией шаблона с переменным числом аргументов . На самом деле он пытается предложить более...
222 просмотров
schedule
26.05.2023
Какое правило позволяет `this-› `получать доступ к членам зависимых базовых классов?
Как мы знаем, приведенный ниже код плохо сформирован, потому что член x находится в зависимом базовом классе. Однако изменение x на this->x в указанной строке исправит ошибку.
template <typename T>
struct B {
int x;
};
template...
412 просмотров
schedule
21.12.2022