
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);
вот как писатьс разу и в файл и в консоль

Aidar
31.08.2018
11:49:00

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
Потому что это идеологически интерфейс.
Возможно, ты пытаешься предложить решение Игоря, да, оно подходит.

Aidar
31.08.2018
11:53:07

Andrew
31.08.2018
11:53:31

Aidar
31.08.2018
11:53:56
Или лямбды там
Расширение через наследование такое себе

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
Кстати есть какие-то хаки чтобы сделать лямбду дефолт констрактабл?

Побитый
31.08.2018
12:09:20

Andrey
31.08.2018
12:12:49

Igor
31.08.2018
12:19:12

Aidar
31.08.2018
12:20:12

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

Aidar
31.08.2018
12:20:29

Andrey
31.08.2018
12:21:13

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

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

Александр
31.08.2018
16:08:17

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

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

Yarique
31.08.2018
16:11:35

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

Александр
31.08.2018
16:17:53

Yarique
31.08.2018
16:18:27

Евгений
31.08.2018
16:19:40

Anton
31.08.2018
16:20:20

Побитый
31.08.2018
16:21:08

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

Yarique
31.08.2018
16:23:37

Александр
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

Alexander
31.08.2018
16:29:58

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

Alexander
31.08.2018
16:33:33

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

?
31.08.2018
16:34:48

Александр
31.08.2018
16:35:21

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

Alexander
31.08.2018
16:36:08

Александр
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 не работает

Evgeniy
31.08.2018
16:47:26

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

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

Александр
31.08.2018
16:59:26

Alexander
31.08.2018
17:00:24

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:01:29

Побитый
31.08.2018
17:02:21

Antony
31.08.2018
17:02:28

Александр
31.08.2018
17:02:38

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