170 похожих чатов

Всем привет! Я не могу корректно инициализировать статическое шаблонное поле

класса, строка 20. Как правильно это сделать?

https://godbolt.org/z/x5Efj4E19

19 ответов

31 просмотр

Инициализация должна быть в 16-й строке. В 20-й что-то странное написано.

Andrey-Solovyev Автор вопроса
Alexander Karaev
Инициализация должна быть в 16-й строке. В 20-й чт...

Я голову сломал - чего-то я не понимаю про предмет. Покажи как правильно это сделать, пожалуйста.

Andrey Solovyev
Я голову сломал - чего-то я не понимаю про предмет...

что вы вообще хотели сказать в строке 20? typename typename {}; - это не синтаксис С++

Andrey Solovyev
Я голову сломал - чего-то я не понимаю про предмет...

Написана чушь. Что должна делать 20-я строчка? Я попробую сванговать: 1. 20-я строчка "добавляет" в base_t<1> инстанциацию type_holder_t<int> 2. Предполагается, что 30-я строчка в дальнейшем вытащит эту инстанциацию из base_type.

Andrey-Solovyev Автор вопроса
Alexander Karaev
Написана чушь. Что должна делать 20-я строчка? Я п...

1) Есть шаблонный класс (структура) base_t 2) В нем есть шаблонное статическое поле type_holder Что хотим - для каждой специализации шаблонного класса base_t иметь какую-то свою специализацию шаблонного поля type_holder 3) Инициализируем шаблонное поле type_holder после объявления класса base_t - должны мы это сделать? Вроде бы да. 4) Объявляем переменную b1, которая делает инстанс класса base_t. 5) У инстанса b1 есть type_holder, который хочется параметризировать типом int вот для специализации base_t<1>. Именно так должно работать статическое шаблонное поле. Исходя из хотелок, таки да, цели 20 и 30 строк свангованы корректно 🙂

Andrey Solovyev
1) Есть шаблонный класс (структура) base_t 2) В не...

Шаблонное статическое поле, которое не зависит от шаблона класса - это что-то странное и навряд-ли работающее.

Andrey-Solovyev Автор вопроса

Factory не получится для такого сделать, так ведь?

Andrey Solovyev
Factory не получится для такого сделать, так ведь?

От чего зависит factory? Если она должна возвращать разные base_t<..> в зависимости от рантайм аргумента, то без std::variant и type erasure не обойтись.

Andrey-Solovyev Автор вопроса
Alexander Karaev
От чего зависит factory? Если она должна возвращат...

Я не знаю T в точке вызова. Поэтому хотелось бы его создать и сохранить сразу при создании объекта base_t.

Andrey Solovyev
Я не знаю T в точке вызова. Поэтому хотелось бы ег...

С++ статически типизирован. Предлагаю описать задачу целиком

Andrey-Solovyev Автор вопроса
Alexander Karaev
С++ статически типизирован. Предлагаю описать зада...

Реализация паттерна Наблюдатель со следующими параметрами: - неизвестные типы Наблюдателей, которые подписываются на один тип событий - шаблонные методы уведомления и обновления состояний Вот пожалуй и все, что надо. В Паблишере надо хранить указатели на черти-что. Когда наступает событие, то Паблишер дергает один метод - уведомить, который имеет шаблонные аргументы. Единственной точкой на этом пути, где происходит взаимодействие Паблишера с Наблюдателем, является метод подписки Наблюдателя на тип событий и когда можно у него спросить - какого ты типа?

А в чем проблема хранить сразу тайп еражур коллбеки? std:: function<void(Event>)

Андрей Будиловский
А в чем проблема хранить сразу тайп еражур коллбек...

Можно прикрутить какие-нибудь токены для отписки, кому нужно отписываться - будет из сохранять при подписке, при отписке брать токен и идти туда, куда надо

Andrey-Solovyev Автор вопроса
Андрей Будиловский
А в чем проблема хранить сразу тайп еражур коллбек...

Шаблонная нагрузка уведомления и обновления состояния. Грубо говоря есть template <typename SomePayload> observer.Update(SomePayload &&)

Andrey-Solovyev Автор вопроса
Kelbon
map<typeid, list>

Большое спасибо! Я забыл про typeid. Это может быть прямо выходом.

Andrey Solovyev
Шаблонная нагрузка уведомления и обновления состоя...

Так лямбду делаешь и все, не? Типа через концерт/сфинае чекеешь, что есть нужный метод, а потом оборачиваешь в лямбду с захватом tgis

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
1
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Карта сайта