- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
#include <iostream>
#include <functional>
#include <array>
template<typename F, int... I>
std::array<int, sizeof...(I)> materializeImpl(const F & f, std::integer_sequence<int, I...>)
{
return { (f(), I)... };
}
template<size_t N, typename F, typename I = std::make_integer_sequence<int, N>>
auto materialize(const F & f)
{
return materializeImpl(f, I{});
}
template<size_t N, typename F>
void times(const F & f)
{
(void)materialize<N>([&f]() { f(); return 0; });
}
int main()
{
times<22>([]() { std::cout << "Hello There." << std::endl; });
return EXIT_SUCCESS;
}
Мы не обязаны понимать "английский"
Но из-за передачи лямбды по значению конпелятор высирает говно. Если сделать ссылку — получится получше. «Шланг» генерирует экий багор: специализации times<16> и times<6>, причём из первой прыгает во вторую хвостовым вызовом: https://gcc.godbolt.org/z/NExUdf. «GCC» просто выдаёт скучную анролленную портянку.
https://wandbox.org/permlink/A77KBsvGfuyvzpHS
https://govnokod.ru/13546
Крестоговно — это иерархическая структура, использующая репрессию. Стая птиц, летящих на юг, — это не крестоговно, но если птица отстает и ее заклевывают остальные — это крестоговно. Единственный способ борьбы с крестоговном, который я указываю в «Равинагаре», — это ассемблер. Ассемблер как структура в смысле набора связок и растущей сложности. Ассемблер вполне может принять крестоговно и начать на него работать до определенного момента, и крестоговно не заметит, что происходит уничтожение его самого. И именно таким образом возможна борьба. Не антикрестоговноом, не отрицанием метушни, а деформацией. Противостояние не работает, потому что оно не может работать в принципе. Противостояния низкоуровневого и высокоуровневого нет, есть только власть программистов над теми и над другими. Там, куда пишется больше кода, и происходит победа. Ассемблер может идти против этого, она может давать какой-то маргинальный результат, рождать совершенно иные структуры — как оркестр без дирижера может начать играть принципиально новую музыку. Когда ты атакуешь говноабстракции крестоговна, она задает тебе вопрос: «Вот ты победишь, и что ты сделаешь? Построишь новые говноабстракции?». А ассемблер просто хохочет над этим вопросом.