@ProCxx

Страница 2314 из 2477
Stanislav
31.08.2018
11:46:51
std::vector<spdlog::sink_ptr> sinks; auto color_sink = std::make_shared<spdlog::sinks::wincolor_stdout_sink_mt>(); sinks.push_back(color_sink); auto sink2 = make_shared<spdlog::sinks::simple_file_sink_mt>(loggerName + ".log"); sinks.push_back(sink2); logger = std::make_shared<spdlog::logger>(loggerName, begin(sinks), end(sinks)); spdlog::register_logger(logger); вот как писатьс разу и в файл и в консоль

Andrew
31.08.2018
11:50:22
>Template не идет Почему?
Потому что нельзя template virtual. Выше Igor Ivanov уже показал, как можно в данном примере извернуться.

Aidar
31.08.2018
11:50:47
Че такое template virtual

Google
Andrew
31.08.2018
11:51:10
Ну у 1 метода сделать его и шаблонным и виртуальным.

Aidar
31.08.2018
11:51:23
А зачем его делать виртуальным?

Igor
31.08.2018
11:52:09
Потому что нужна разная реализация в наследниках, видимо

Anton
31.08.2018
11:52:22
это изврат какой то

Andrew
31.08.2018
11:52:34
Потому что это идеологически интерфейс. Возможно, ты пытаешься предложить решение Игоря, да, оно подходит.

Andrew
31.08.2018
11:53:31
Для этого есть трейтсы, полиси и стратегии
У меня runtime полиморфизм в этом месте.

Aidar
31.08.2018
11:53:56
У меня runtime полиморфизм в этом месте.
Стратегии это std function есличо

Или лямбды там

Расширение через наследование такое себе

Andrew
31.08.2018
11:54:58
Другими словами, передать колбек? Ну да, только по прежнему остается проблема с типами, которая никуда не ушла.

Igor
31.08.2018
11:55:53
Ушла - функция do осталась шаблонной и невиртуальной, а вот вместо virt_do появился каллбак

А каллбак можно брать из виртуальной фабрики каллбаков с разной реализацией в наследнике :)

Google
Alexandr
31.08.2018
11:57:49
Посонэ, такой вопрос. sizeof(type) вычисляется на этапе компиляции?

Andrew
31.08.2018
11:57:50
Да, но переход к колбеку тут ортогонален проблеме с типами, пожно virt_do сделать колбеком (зачем-то), можно виртуальной функцией для переопределения в наследнике. Суть проблемы была именно в разделении на 2 функции, которое я проглядел.

А каллбак можно брать из виртуальной фабрики каллбаков с разной реализацией в наследнике :)
Но зачем переизобретать существующее виртуальное наследование, с учетом того, что с последним мог бы еще попытаться сработаться оптимизатор?

Igor
31.08.2018
11:59:58
Пардон, табличка сарказма отвалилась

Andrew
31.08.2018
12:00:22
А, ок, ну вот у меня просто такие же мысли были.

Spoonson
31.08.2018
12:04:29
минус виртуальных функций - это то, что надо возиться, создавать классы. А коллбэков напихал через лямбды в любом месте, меньше возиться.

но это дело вкуса

Aidar
31.08.2018
12:07:55
Кстати есть какие-то хаки чтобы сделать лямбду дефолт констрактабл?

Aidar
31.08.2018
12:20:12
captureless lambda?
Ну очевидно что да, но как?

Andrey
31.08.2018
12:20:28
в С++20 само будет

Aidar
31.08.2018
12:20:29
std::optional?
Не, я хочу создать и вызвать

Andrey
31.08.2018
12:21:13
Ну очевидно что да, но как?
http://open-std.org/JTC1/SC22/WG21/docs/papers/2017/p0624r0.pdf

Yarique
31.08.2018
14:14:42
У std::string_view есть конструктор, который принимает std::string или неявно кастуется std::string в const char*, или мне просто повезло, что компилится и это ub? void func(const std::string_view& param) { std::cout << param << ‘\n’; } int main() { std::string str = “test”; func(str); }

Aleksandr
31.08.2018
14:21:18
у стринга есть каст в стринг вью

Yarique
31.08.2018
14:22:10
Kirill
31.08.2018
15:54:42
Wrestler
31.08.2018
16:04:40
Какие интерфейсы для работы с принтером предоставляет Линукс ?

Google
Alexander
31.08.2018
16:04:55
CUPS?

Wrestler
31.08.2018
16:05:42
Да

Kirill
31.08.2018
16:05:42
О 15, да, спасибо
С утра отправил с телефона, вечером отправилось)

Wrestler
31.08.2018
16:06:39
CUPS?
А вообще в независимости от внешнего устройства каким образом ос понимает какие команды доступны ?

Yarique
31.08.2018
16:09:38
Почему? Чем это опаснее const std::string& параметра?

Anton
31.08.2018
16:10:13
наверно потому, что ты смысла нет

Yarique
31.08.2018
16:11:35
наверно потому, что ты смысла нет
sizeof(std::string_view) == sizeof(std::string_view&) ?

Anton
31.08.2018
16:11:50
Предполагаю что да

Александр
31.08.2018
16:17:53
Почему? Чем это опаснее const std::string& параметра?
а вы указатели тоже по константной ссылке передаёте? ?

Yarique
31.08.2018
16:18:27
а вы указатели тоже по константной ссылке передаёте? ?
Я пока только знакомлюсь со std::string_view

Евгений
31.08.2018
16:19:40
Anton
31.08.2018
16:20:20
а вы указатели тоже по константной ссылке передаёте? ?
Хотя кстати wandbox.com говорит что размер string_view 16 байт Ссылка явно меньше должна занимать

Побитый
31.08.2018
16:21:08
Александр
31.08.2018
16:21:10
Я пока только знакомлюсь со std::string_view
не буду отвечать вопросом на вопрос, поэтому просто смотрите: https://godbolt.org/z/QH3sK9 если на указатели смотреть, то при передаче по ссылке будет лишнее чтение памяти на каждое обращение. string_view - это пара указателей, так что с ним всё аналогично

Александр
31.08.2018
16:24:55
sizeof(std::pair<int*,int*>) != sizeof(int&)
так с этим никто не спорит. двукратный размер машинного слова можно передавать без особых раздумий. никто ведь не передаёт uint64_t/int64_t на x86 системах по ссылке, переживая за лишнее копирование

лучше один раз скопировать лишние 4 (8) байт, чем потом на каждое обращение лишний раз память читать

Александр
31.08.2018
16:27:20
Hi everyone Мне нужно программно накладывать текущую дату на изображение. Вопрос: каким образом можно наложить текст на изображение? Возможно ли при этом обойтись обычным консольным приложением или же придется работать с Qt/GTK+/etc?

Спрашивал на toster.ru, посоветовали ImageMagick, но это вроде бы не то

Google
Александр
31.08.2018
16:31:00
Ах да, про opencv. Мне нужно текст сделать с эффектами (тень, наклон и тд), а opencv, насколько мне известно, этого не умеет

Igor
31.08.2018
16:34:06
Консольным приложением обойтись вполне можно, есть даже предположение, что с ImageMagic можно будет обойтись вообще баш-скриптом, возможности у этой штуки бешеные насколько я помню

Igor
31.08.2018
16:35:29
Хотя и хз, может у него в аргументы только преобразования контрастность/цветность/уровни выведены, а точечно редактировать изображения придется серез библиотечку

Александр
31.08.2018
16:37:38
В итоге понятней не стало

Antony
31.08.2018
16:39:40
мне тут показали весёлый трешачёк для получения текстового имени поля enum на рантайм: https://godbolt.org/z/TkxouV

* оставим пока за бортом тот факт, что gcc генерирует не код, а какое-то безобразие. Тикет на это сейчас заведу

Александр
31.08.2018
16:44:44
гениально

Antony
31.08.2018
16:45:57
но на GCC не работает

Eugene
31.08.2018
16:57:18
А чё я не могу стикеры постить?(

Побитый
31.08.2018
16:58:03
В своё время это было чудо

Александр
31.08.2018
16:59:26
Google
Побитый
31.08.2018
17:00:28
может всё-таки через sfinae?
Я про это: > The first concrete demonstration of this was a program written by Erwin Unruh, which computed prime numbers although it did not actually finish compiling: the list of prime numbers was part of an error message generated by the compiler on attempting to compile the code. https://en.wikibooks.org/wiki/C%2B%2B_Programming/Templates/Template_Meta-Programming#History_of_TMP

Alexander
31.08.2018
17:00:32
и можно сделать красивее ?

Побитый
31.08.2018
17:02:21
так это не ошибки компиляции, а просто рекурсивный шаблон
Там ссылка на источник есть. http://aszt.inf.elte.hu/~gsd/halado_cpp/ch06s04.html#Static-metaprogramming

Александр
31.08.2018
17:02:38
Antony
31.08.2018
17:03:11
а это разве не известный хак?
Я его в первый раз увидел. До этого я считал что текстовое имя enum получить на рантаме можно только вручную нагенерировав кода

Страница 2314 из 2477