Любопытно повторяющийся шаблон шаблона (CRTP) - это идиома C++, в которой класс X является производным от экземпляра шаблона класса с использованием самого X в качестве аргумента шаблона.
2 ответа

Clang и Intel не могут скомпилировать этот код CRTP

Я написал небольшую библиотеку, которая использует множество методов метапрограммирования C++11 и CRTP, и она хорошо компилируется с g++ 4.7.2 Теперь я пытаюсь скомпилировать его с Intel ICPC 13.0.0.079, и он генерирует несколько сотен ошибок. Поэто…
08 янв '13 в 14:26
2 ответа

Могу ли я переслать аргументы шаблона производного класса в базу CRTP?

Предположим, у меня есть производный класс Derived, А также принимая параметры шаблона, Derived является производным классом Baseкоторый, в свою очередь, основан на Derived, Ниже приведен пример рабочего решения: template <int i, typename T> c…
31 июл '14 в 01:01
2 ответа

Ошибка: нет члена с именем rank_ в EndIndex

Я пытаюсь использовать библиотеку автоматического дифференцирования Adept, и я заставил ее работать с gcc 4.9.0 и icc 16.0.2, но не удалось с VS 2017 и Clang 4.0.1 Я сократил проблему до следующего фрагмента и, пока я решаю эту проблему с создателям…
18 окт '17 в 08:56
1 ответ

Итератор Наследование и наследование *this

Как написать базовый класс и несколько производных классов итератора? Должен ли итератор возвращать себя (*this)? Пока что пользуюсь typename X а также static_cast<X&>(*this) чтобы позволить производному классу наследовать функцию, которая…
20 сен '16 в 21:32
3 ответа

Как написать любопытно повторяющиеся шаблоны с более чем 2 слоями наследования?

Весь материал, который я прочитал на шаблоне "Любопытно повторяющийся шаблон", кажется одним уровнем наследования, т.е. Base а также Derived : Base<Derived>, Что если я захочу сделать еще один шаг вперед? #include <iostream> using std::c…
12 май '10 в 17:00
1 ответ

Ошибка шаблона множественного наследования неоднозначного символа

У меня есть реальная проблема, которая может быть обобщена следующим образом: template <typename BaseType> class TemplateClass { public: template <typename BaseTypee, unsigned PrefixID> static void deleteType(unsigned int ObjID) { } }; c…
08 май '16 в 14:50
1 ответ

Оператор шаблона класса шаблона требует доступа к другим специализациям

Я реализовал матричный класс с использованием CRTP. Для умножения матриц я хотел бы использовать friend operator*, Проблема в том, что в соответствии с этим вопросом и моим собственным опытом мне нужно определить operator* внутри класса, чтобы заста…
22 ноя '13 в 13:41
1 ответ

C++ эффективная реализация классов-оболочек

У меня есть проект, который широко использует (с высокой частотой) ограниченный набор ключевых операций линейной алгебры, таких как умножение матриц, инверсия матриц, сложение и т. Д. Эти операции реализованы с помощью нескольких библиотек линейной …
05 ноя '17 в 12:07
1 ответ

Использование "любопытно повторяющегося шаблона" в многофайловой программе

Я довольно начинающий (C++) программист и только что обнаружил CRTP для подсчета объектов, принадлежащих определенному классу. Я реализовал это так: template <typename T> struct Counter { Counter(); virtual ~Counter(); static int count; }; tem…
09 июл '10 в 20:24
1 ответ

Получить размер полиморфного объекта

Я хочу иметь возможность получить размер полиморфного объекта. На данный момент я получил это: struct Base { virtual std::size_t size() const { return sizeof(*this); } }; struct Derived : Base { virtual std::size_t size() const { return sizeof(*this…
21 сен '14 в 17:09
2 ответа

Контейнеры CRTP

Я режу зубы в некотором программировании шаблона, и я очень плохо знаком с этим. Я хочу реализовать несколько классов CRTP, которые содержат контейнер STL. Позволять class A{}; служить примером для базового класса (время компиляции), из которого cla…
30 авг '11 в 04:56
1 ответ

Как вызвать конкретный метод шаблона в классе детей (наследование с помощью CRTP -решения)

У меня есть шаблон, подобный стратегии, где интерфейсом стратегии является IFilter, Context - это класс Context, Filter1, Filter2... и т. Д. - это Concrete Strategies, CommonFilter - это промежуточный слой между Strategy и Concrete Strategy для неко…
17 сен '18 в 10:48
1 ответ

Получить тип шаблона класса в шаблоне посетителя

Я пытаюсь написать систему обмена сообщениями с шаблонами, шаблонами посетителей и с помощью CRTP. Я понимаю эти концепции, но, тем не менее, я нахожусь в ситуации, когда мне нужно вернуть "потерянный" тип. у меня есть Base класс, и я хочу найти Der…
21 апр '17 в 21:59
1 ответ

Вызов функции-шаблона родительского класса из производного класса

У меня очень специфический вопрос (не против спросить, почему я этого хочу, было бы очень сложно объяснить это) Я хочу вызвать Template-Function из родительского класса, который косвенно вызывает деструктор дочернего класса Я пытался реализовать это…
04 май '16 в 11:44
1 ответ

Обеспечить безопасность при использовании CRTP

Рассмотрим следующий фрагмент кода при использовании CRTP. #include <iostream> struct Alone { Alone() { std::cout << "Alone constructor called" << std::endl; } int me {10}; }; struct Dependant { explicit Dependant(const Alone& …
19 апр '16 в 03:10
1 ответ

Может ли libclang проанализировать шаблон CRTP?

Я пытаюсь использовать libclang для синтаксического анализа C++, но, похоже, есть проблема с шаблоном CRTP, то есть когда класс наследует от шаблона, который создается с помощью производного класса: // The Curiously Recurring Template Pattern (CRTP)…
14 мар '17 в 19:57
1 ответ

CRTP и функции, которые возвращают экземпляр производного типа

Я пытаюсь создать базовый класс с функциями, которые при наследовании возвращают экземпляры подкласса. Абстрактная версия того, что я сейчас пытаюсь: Ах: #include <string> template <typename Derived> class A { public: A<Derived>();…
28 апр '16 в 18:16
0 ответов

Clang++-3.7 Ошибка компиляции CRTP "без имени члена" в аргументе шаблона родителя

В приведенном ниже коде я пытаюсь использовать CRTP для использования статического члена "значение" из класса Child в классе Parent. При компиляции кода с g++ 5.2.1 с флагом "-pedantic" я могу компилировать как положено, и при выполнении c.print_val…
02 мар '16 в 22:02
1 ответ

Любопытно повторяющиеся проблемы подклассов, зависящие от параметров шаблона и шаблона

Я пытаюсь заставить работать следующий код template < class __derived, class __object = typename __derived::Object > struct Base { using Derived = __derived; using Object = __object; void function(Object o) { return Derived::function(s); } } /…
17 июн '14 в 23:36
1 ответ

C++ CRTP с параметризованным базовым классом?

Я пытаюсь использовать CRTP с небольшим изменением. У меня есть один шаблон производного класса, и я хочу применить его к нескольким базовым классам. Но это либо невозможно, либо я просто не могу понять правильный синтаксис. Следующий код не компили…
21 окт '11 в 09:16