Search
Write a publication
Pull to refresh
554
0.1

Довожу здравый смысл до абсурда

Send message

Я ненастоящий сварщик, но светодиод-то между МК и землёй. Можно поставить ногу на вход (не на выход!) и включать-выключать внутреннюю подтяжку.

А вывод этого шаблонного типа мало чем отличается от макроса в смысле развёртывания. Получается длиннющая нечитаемая автосгенерированная портянка. Которую хорошо дебажить, если она не компилируется. А если компилируется?

А, ну да. Игрушечный пример из жизни. Вот решил я как-то матрицу на вектор умножить в Eigen3: auto B = A*x; , где A - матрица, x - вектор. Работало всё как надо, разве что, тормозня несусветная была. Заменил auto на настоящий тип Eigen::VectorXd B = A*x; - и всё взлетело.

А если auto развернуть...

барабанная дробь
Eigen::Product<Eigen::CwiseBinaryOp<Eigen::internal::scalar_quotient_op<double, double>, Eigen::Product<Eigen::Product<Eigen::SparseMatrix<double, 1, int>, Eigen::Transpose<Eigen::SparseMatrix<double, 1, int> >, 2>, Eigen::Transpose<Eigen::Matrix<double, -1, -1, 0, -1, -1> const>, 0> const, Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>, Eigen::Matrix<double, -1, -1, 1, -1, -1> const> const>, Eigen::CwiseBinaryOp<Eigen::internal::scalar_quotient_op<double, double>, Eigen::CwiseBinaryOp<Eigen::internal::scalar_difference_op<double, double>, Eigen::CwiseBinaryOp<Eigen::internal::scalar_product_op<double, double>, Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>, Eigen::Matrix<double, -1, 1, 0, -1, 1> const> const, Eigen::Product<Eigen::Product<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::SparseMatrix<double, 1, int>, 0>, Eigen::Matrix<double, -1, 1, 0, -1, 1>, 0> const> const, Eigen::CwiseBinaryOp<Eigen::internal::scalar_product_op<double, double>, Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>, Eigen::Matrix<double, -1, 1, 0, -1, 1> const> const, Eigen::Product<Eigen::CwiseUnaryOp<Eigen::internal::scalar_opposite_op<double>, Eigen::Matrix<double, -1, -1, 0, -1, -1> const>, Eigen::Product<Eigen::Product<Eigen::Matrix<double, -1, -1, 0, -1, -1>, Eigen::SparseMatrix<double, 1, int>, 0>, Eigen::Matrix<double, -1, 1, 0, -1, 1>, 0>, 0> const> const> const, Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>, Eigen::Matrix<double, -1, 1, 0, -1, 1> const> const>, 0>

Думаете, макросы нагляднее читаются? Я, наверное, старый, но ошибки в MFC/Afx мне до сих пор в кошмарах снятся.

В этой статье вряд ли что-то может пригодиться в реальной жизни, а вот какой-нибудь #pragma omp - это очень, очень полезная препроцессорная магия.

Даже в современном C++ кросс-платформенные приложения не могут обойтись без макросов :(

Давайте я дам полностью рабочий пример рекурсии на макросах, а то из вашей заготовки её не очень просто собрать.

А вообще https://github.com/Hirrolot/metalang99 :)

Я не знаю, где катаетесь вы, но, по крайней мере, в небольших городах (Канады в том числе) собак выгуливают в лесопарках без поводков/намордников. Да, после укуса можно попробовать засудить хозяина собаки, но укус никуда не денется. Ваш опыт кручения педалей отличается от моего.

Тот факт, что конкретно вы проблемы не имели, не означает, что её не существует. Вот вам пример про Канаду. И сразу же идёт упоминание перцового баллончика, а не штрафов. Перцовый баллончик можно использовать до укуса, а вот штраф реально только после.

1) Таких стран, наверное, немного. Ватикан там какой-нибудь, понимаю.
2) Ну вот вы научились, что собака должна быть на поводке, а ваш сосед - нет. Какие дальнейшие предложения по конкретно вашим действиям?

А вы что бы предложили?

Мне кажется, что вы Россию просто больше практиковали, нежели Европу. Будучи заядлым велосипедистом, я в Европе регулярно дырки в ногах пытаюсь залечить.

О чём я и говорил, что в кои-то веки можно не заботиться об UB.

Извините за душность, но рогатина и рогатка - разные вещи.

Скрытый текст

https://ru.wikipedia.org/wiki/Рогатка :

Ошибочно считать, что рогатка имеет отношение к рогатине — холодному оружию, применявшемуся на Руси.

Не надо, оно умерло уже пятнадцать лет как. Зачем вам стылый подростковый юмор? :)

Неправильно. Забыл, что корень из отрицательного числа имеет два значения.

\pm 3\sqrt 3\, i

Ха, определения очень сильно зависят от школы, в которой вы учились. Знаете ли вы, что для французов «nombre positif» означает «большее либо равное нулю»?

Ну да, а «двачую» это искажённое «дваждую», которое является дурацкой калькой с «I second». Я вырос чуть раньше 2ch :)

А что мешает сделать ассемблерную вставку при сильной необходимости?

(Впрочем, оптимизатор скорее всего велосипед со сравнением превратит ровно в тот ассемблер, что был бы написан руками)

1
23 ...

Information

Rating
5,044-th
Registered
Activity