const
под это понимание не попадает по определению.const local
намеки на constant-expression и проведет оптимизацию. Компиляторы всегда работают по-разному. Просто компиляторы - разные. Запускает поток на выполнение асинхронно с основным потоком я полагаю.
detach
у тебя лишний во всех возможных смыслах. Поток целевой платформы запускается сразу в конструкторе объекта потока. После перемещения в пару th
будет пустым, а th.detach()
ничего не сделает.Смысл, как мне казалось, в том что бы создать поток, запустить его и сохранить в map.
th.detach()
? Я спрашиваю про смысловую нагрузку только одной этой строчки. th.detach()
, какую смысловую нагрузку несет конкретно эта строчка во всем твоем механизме?std::thread
нет конструктора копирования. А ты в коде пытаешься его копировать.std::thread th(b, data.data)
- std::function
тоже лучше бы перемещать. class ExceptionEnvelope(object):
def __init__(self, exception):
self.data = exception
self.type = type(exception).__name__
self.source = ...
class ExceptionDispatcher(object):
...
def dispatch(self, exception):
envelope = envelope_factory.produce(exception)
mailbox_registry.visit(lambda mailbox: mailbox.try_accept(envelope))
Logger.log('старт скрипта')
- это что, каждую функцию так начинать и заканчивать?Logger.log('Нормально все прошло идем дальше')
- это ты в каждом удобном месте писать хочешь?Logger.log
прямо так брать и списывать не стоит, он тоже полезный и им тоже важно пользоваться. Но не для трассировки. reinterpret_cast
. Это выстрел себе в ногу.reinterpret_cast
работает очень коварно:Unlike static_cast, but like const_cast, the reinterpret_cast expression does not compile to any CPU instructions... It is purely a compile-time directive which instructs the compiler to treat expression as if it had the type new_type.
static_cast
- этого тут достаточно для работы. Этот каст приведет this
к правильному указателю на объект родительского типа.
Шаблоны стека и очереди у тебя уже есть, их можно не делать. Но вот бинарное дерево операций сделать надо. И сами операции тоже. Думай о константе, как о унарной операции, которая всегда возвращает одно значение. О переменной можно думать как о унарной операции, которая возвращает значение из внешней памяти, которая будет доступна в момент исполнения.
В целом, да, ты прав. Сейчас легче будет начать именно с этапа реализации АСТ формулы в виде бинарного дерева операций. На этом этапе ты уже сможешь выполнять АСТ как функцию чтобы сформировать значения для графика.