Вопросы по теме 'using-declaration'

использование с именем базового класса для изменения допуска?
Мой друг показал мне следующий код struct A { virtual void f() = 0; virtual void g() = 0; }; struct AInternal : A { virtual void f() { /* ... */ } virtual void g() { /* ... */ } }; Он использует AInternal как внутренний класс,...
145 просмотров
schedule 26.10.2021

Могут ли зависимые имена отображаться в конструкторах после подстановки шаблона в объявлении-использовании?
В этом примере: template<class T> struct S : T { using T::X; }; T::X - это зависимое имя, которое относится к члену X в T . Если S<T> создается с T = X : struct X { X(int) {} }; ... S<X> s(42);...
176 просмотров

Объявление использования не может повторяться в области действия функции. Почему это?
В [namespace.udecl]/10 у вас есть следующий пример: namespace A { int i; } namespace A1 { using A::i; using A::i; // OK: double declaration } void f() { using A::i; using A::i; // error: double declaration } Этот фрагмент...
272 просмотров

Должен ли член класса использовать объявление с зависимым квалифицированным идентификатором зависимым именем?
В проекте N3337 стандарта C ++ 11 говорится в [namespace.udecl] Объявление using вводит имя в декларативную область, в которой появляется объявление using. Каждое объявление-использование - это объявление и объявление-член, поэтому их...
1666 просмотров

Использование псевдонима для ссылки на анонимную структуру приводит к ошибке
Моя теория заключается в том, что в gcc есть ошибка. Следующее компилируется как в clang, так и в gcc: using type = const struct {}&; Но теперь, когда я меняю его на ссылку rvalue, он компилируется с clang, но не с gcc: using type =...
184 просмотров
schedule 09.07.2023

Несоответствие переопределения в clang между struct и int
Следующая программа не выдает ошибок при компиляции с clang: namespace X { struct i {}; } namespace Y { using X::i; struct i {}; } int main() {} Используем int вместо struct, тогда получим: namespace X { int i; }...
396 просмотров

Разрешение перегрузки между элементами шаблона в базовых и производных классах
Компилятор Microsoft (Visual Studio 2017 15.2) отклоняет следующий код: #include <type_traits> struct B { template<int n, std::enable_if_t<n == 0, int> = 0> void f() { } }; struct D : B { using B::f;...
242 просмотров

Объявление использования существующего типа пространства имен и создание псевдонима типа
Это не вопрос о разнице между using и typedef для создания псевдонимов типов. Я хотел бы предоставить доступ к существующему типу из пространства имен внутри блока кода или функции. Я нашел два разных способа: Я могу «включить» тип с...
229 просмотров
schedule 19.11.2022

Правила использования объявлений c++
После прочтения принятого ответа от этот вопрос , я думал, что понял, почему программа не удалась, поскольку директива использования фактически не объявляет объект i в регионе . Однако имена, введенные объявлением using , могут использоваться...
76 просмотров