Описание тега injected-class-name

1 ответ

Поиск имени базового класса после наследования конструктора

Рассмотрим следующий код: struct base {}; struct derived : public base { using base::base; base foo() const; // how does name lookup on 'base' here work? }; Интуитивно понятно, что этот код действителен, и он компилируется (проверено с помощью gcc и…
4 ответа

Обмен слова класса и структуры в C++

Я читал об одной странной функции C++, называемой Injected class name. Я попробовал следующую простую программу #include <iostream> class test { int s{3}; public: int get_s() { return s; } }; int main() { class test::test s; // struct test::te…
22 июл '15 в 09:33
2 ответа

Разница между добавлением и пропуском параметра шаблона для имени класса внутри конструктора

Я хочу знать, есть ли разница между: template <typename T> class foo{ foo<T>(){}; }; template<typename T> class foo{ foo(){}; }; Кажется, что оба работают, но я не понимаю разницу между ними. Первый сбивает меня с толку, я не поним…
1 ответ

Любопытный миксин с вариадическим конструктором

У меня есть фрагмент кода, включающий в себя variadic mixin crtp некоторых типов и несколько связанных вопросов. Правильно ли я понимаю, что в следующем коде второй конструктор просто передает копии экземпляров тех классов, которые использовались дл…
1 ответ

Почему объявление частного базового класса делает имя типа недоступным?

Я удивлен, что в следующем примере объявление частного класса Мидла делает это имя недоступным в качестве типа при последующем выводе. class Base { public: Base(Base const& b) : i(b.i) {} int i; }; class Middle : private Base { //<<<&lt…
27 дек '18 в 18:44
0 ответов

Маленькая странная проблема на простом JS

У меня есть небольшая проблема с простым сценарием. Он применяет className только один раз на два. вот мой код Заранее спасибо всему сообществу и, пожалуйста, прости плохой английский французского парня:-)! <!DOCTYPE html> <html lang="en"&g…
30 ноя '17 в 14:01
1 ответ

Почему injected-class-name иногда не рассматривается как имя шаблона в шаблоне класса?

Источник В следующих случаях имя введенного класса обрабатывается как имя шаблона самого шаблона класса: за ним следует < используется в качестве аргумента шаблона, соответствующего параметру шаблона это последний идентификатор в разработанном спец…
08 май '18 в 20:00
2 ответа

Видимость / доступ частного наследования в C++

Почему интерфейс имеет особую видимость в методе из-за частного наследования? Обратите внимание, что в моем производном классе требуется глобальный спецификатор ::. Я не понимаю, почему метод наследует видимость из-за частного наследования. Совершен…
1 ответ

Нужно ли указывать typename в типе возвращаемого значения функции-члена, если функция определена внутри тела класса?

Рассмотрим пример ниже: template &lt;typename T&gt; class SomeClass { // rest of the definition ... SomeClass&lt;T&gt;&amp; function1() { // ... return *this; } SomeClass&amp; function2() { // ... return *this; } } Есть ли разница между возвращаемым…
1 ответ

Странный стиль за счет внедрения таблиц стилей с классом logo-icon в Chrome

Мой проект построен на Angular 9+. Раньше все работало правильно. Но сегодня (07.08.2020) хром (версия 84.0.4147.105 (официальная сборка) (64-бит)) добавил некоторую внедренную таблицу стилей. Мой логотип-значок получил несколько стилей из хрома. Но…
2 ответа

Что происходит при появлении Injected-Class-Name? (C++)

Согласно https://en.cppreference.com/w/cpp/language/injected-class-name В области действия класса имя текущего класса обрабатывается, как если бы это было имя открытого члена; это называется введенным-именем-классом. Точка объявления имени следует с…
28 янв '20 в 23:00
1 ответ

в чем разница между Node * next и Node &lt;T&gt; * next?

Я писал реализацию связанного списка в приведенном ниже коде мы имеем Node&lt;T&gt; * next; а также Node * next; Я думаю, что оба делают то же самое, что и указывают на объект класса Node, или между ними есть разница. template&lt;typename T&gt; clas…
22 сен '21 в 18:02
2 ответа

Можно ли использовать введенное имя класса в качестве имени типа в объявлении друга?

Рассмотрим этот код: template &lt;typename T&gt; class Singleton { }; class Logger : public Singleton&lt;Logger&gt; { friend class Singleton; }; Он компилируется в gcc и clang, но действителен ли он? [temp.local].1 говорит: Когда оно используется со…