Комментарии 8
Скажите, почему вы объявляете Decorator как struct, в то время как фактически это namespace? Мне такие struct-ы попадаются в старом коде, вероятно, написанном до появления namespace (сейчас попробовал найти, когда это произошло, и не нашёл — как будто фича namespace в C++ была всегда). Или вы планируете добавить не-static содержимое, или защищаете Decorator от сторонних добавлений?
0
не стоит в лямбду захватывать ссылку
0
А как бы вы это сделали? [f = std::move(function)]?
0
template<typename Function>
static auto make(Function&& func)
{
return[func = std::forward<Function>(func)](auto&&... args)
{
std::cout << "Do something" << std::endl;
return std::invoke(func, std::forward<decltype(args)>(args)...);
};
}
можно не переименовать, т.к. func слева от = в захвате относится к неймспейсу лямбды
0
Картинка ввела в заблуждение — ожидал применения тяжёлой артиллерии в виде Clang libtooling.
+1
Немного жести во второй статье — habr.com/ru/post/508828 ))
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Как скомпилировать декоратор — C++, Python и собственная реализация. Часть 1