Size: a a a

2020 August 25

NP

Nikita Provotorov in pro.cxx
Stas Koynov
Ну вот я не знал, что чтобы специализировать трейты для итератора, его нужно вынести из области класса, но выше мне уже подсказали. А вот в книге был пример не шаблонного итератора, камень в огород Яцека.
Честно говоря не очень понимаю зачем специализировать итератор трейты. Как по мне эта штука нужна скорее для чтения инфы, а инфу об итераторе лучше забить в сам класс итератора
источник

NP

Nikita Provotorov in pro.cxx
инкапсуляция все такое
источник

P

Pepe 🐸 in pro.cxx
Stas Koynov
Ну вот я не знал, что чтобы специализировать трейты для итератора, его нужно вынести из области класса, но выше мне уже подсказали. А вот в книге был пример не шаблонного итератора, камень в огород Яцека.
когда у тебя что то в классе оно зависит от параметра шаблона класса, который дан при инстанцировании класса, то есть у тебя в итераторе non deducing context, я так понял в этом вопрос
источник

SK

Stas Koynov in pro.cxx
Pepe 🐸
когда у тебя что то в классе оно зависит от параметра шаблона класса, который дан при инстанцировании класса, то есть у тебя в итераторе non deducing context, я так понял в этом вопрос
да. получалось что при специализации трейтов ошибка мол не могу...
источник

JJ

Joe Joe in pro.cxx
Nikita Provotorov
Честно говоря не очень понимаю зачем специализировать итератор трейты. Как по мне эта штука нужна скорее для чтения инфы, а инфу об итераторе лучше забить в сам класс итератора
чтобы если ты например хочешь просто выставить нужную категорию тебе не надо было городить реализацию? Вопрос уровня "зачем нужны конфиг файлы, я вот suckless software после каждого диффа заново собираю".
источник

JJ

Joe Joe in pro.cxx
Stas Koynov
Ну вот я не знал, что чтобы специализировать трейты для итератора, его нужно вынести из области класса, но выше мне уже подсказали. А вот в книге был пример не шаблонного итератора, камень в огород Яцека.
у тебя non-deduced контекст был, вынос за класс там вообще не у дел.
источник

SK

Stas Koynov in pro.cxx
Nikita Provotorov
инкапсуляция все такое
ну вроде как да. Но в тойже книге мол в 17++ наследование по старинке для итераторов признан устаревшим вариантом и НЕ рекомендуется. мол делайте все через трейты... а в 20++ мол вообще и трейты не нужны делайте через концепты (для итераторов)!
источник

NP

Nikita Provotorov in pro.cxx
Joe Joe
чтобы если ты например хочешь просто выставить нужную категорию тебе не надо было городить реализацию? Вопрос уровня "зачем нужны конфиг файлы, я вот suckless software после каждого диффа заново собираю".
вы хотите выставить категорию для класса который не является итератором?
источник

SK

Stas Koynov in pro.cxx
Joe Joe
у тебя non-deduced контекст был, вынос за класс там вообще не у дел.
я не знаю что там было, но вынос за пределы класса решило проблему. если скажете как специализировать трейты, без выноса из класса, будет шикарно
источник

JJ

Joe Joe in pro.cxx
Nikita Provotorov
вы хотите выставить категорию для класса который не является итератором?
сделать для одного типа категорию Input, для второго Random Access, а реализация одна.
источник

NP

Nikita Provotorov in pro.cxx
Joe Joe
сделать для одного типа категорию Input, для второго Random Access, а реализация одна.
это легко решается тем же crtp
источник

JJ

Joe Joe in pro.cxx
любую проблему можно решить в hex редакторе. А надо?
источник

NP

Nikita Provotorov in pro.cxx
а можно пример когда такое нужно вообще?
источник

NP

Nikita Provotorov in pro.cxx
Joe Joe
сделать для одного типа категорию Input, для второго Random Access, а реализация одна.
this
источник

JJ

Joe Joe in pro.cxx
Stas Koynov
я не знаю что там было, но вынос за пределы класса решило проблему. если скажете как специализировать трейты, без выноса из класса, будет шикарно
ну ты заменил non-deduced контекст (в котором без шансов вывести типы) полной специализацией, вот и работает.
источник

JJ

Joe Joe in pro.cxx
неизвестный тип вс тот который ты прямо руками указал, если конечно мы говорим о последнем самом исходнике что ты кидал.
источник

NP

Nikita Provotorov in pro.cxx
Joe Joe
ну ты заменил non-deduced контекст (в котором без шансов вывести типы) полной специализацией, вот и работает.
там скорее template<typename T> std::iterator_traits<num_iterator<T> >
источник

SK

Stas Koynov in pro.cxx
Joe Joe
ну ты заменил non-deduced контекст (в котором без шансов вывести типы) полной специализацией, вот и работает.
да ты мне скажи, я могу сделать специализацию, не вынося из класса или нет? если нет, то проблема решается:
1. Специализацией под каждый тип шаблона
2. Через вынос из класса и специализацией (как было показано выше)
3 другой вариант который я не знаю...
Если можно то как, что ты ходишь вокруг да около.
источник

JJ

Joe Joe in pro.cxx
делай как в последнем варианте
источник

JJ

Joe Joe in pro.cxx
ну, у тебя, в смысле
источник