- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
template <typename T, typename Mid, int N>
struct UselessWrapperFillMid
{
inline static void FillMid (T* t, Mid mid)
{
mid(t[0], t[N], t[N/2]);
UselessWrapperFillMid<T,Mid,N/2>::FillMid (&t[0] , mid);
UselessWrapperFillMid<T,Mid,N/2>::FillMid (&t[N/2], mid);
}
};
template <typename T, typename Mid>
struct UselessWrapperFillMid <T, Mid, 1>
{
inline static void FillMid (T* t, Mid mid)
{
(void)t;
(void)mid;
}
};
Бесит такой понос вместо нормальной рекурсии.
Но иначе оно не развернётся в последовательность инструкций без ветвлений и вызовов.
TarasB 16.10.2014 20:11 # 0
А всё потому, что ёбаные кресты не могут в специализацию шаблонных функций, это работает только для структур.
Soul_re@ver 16.10.2014 20:34 # 0
guest 17.10.2014 01:55 # −8
Xom94ok 16.10.2014 20:43 # +1
спрячь дерьмо в namespace detail {} и обзови его, как обозвал функцию подсчета этого дерьма
заодно кококомпилятор будет выводить дерьмо аргументов функции
TarasB 16.10.2014 20:45 # +1
Xom94ok 16.10.2014 21:16 # 0
P.S. Стало любопытно: это код генерации фракталов? прочитал.
* xkcd#297
guest 17.10.2014 01:55 # −8
guest 17.10.2014 01:54 # −8
bormand 16.10.2014 20:17 # +1
P.S. А че этот код делает? Судя по всему у него ни результата, ни побочных эффектов нет.
bormand 16.10.2014 20:22 # 0
TarasB 16.10.2014 20:44 # 0
если во втором шаблоне прописать N-N/2 вместо N, то он не только степени двойки сможет нормально принять
TarasB 16.10.2014 21:28 # +1
например, среднее двух цветов формата R8G8B8 - это
честная интерполяция требует разбирать цвет на компоненты, искать вещественное приращение каждой и отдельно приращивать каждую компоненту, короч питух анскилльный
3.14159265 16.10.2014 23:16 # +3
вижходит среднее цевтов R8G8B8 - это цыфры 0xfe 1 15 83 Mid N/2
такой инторполеции в том, что для питушни из многих копонент не надо длать покопонеции, достаточно токо опереции усерднения
TarasB 16.10.2014 23:17 # 0
3.14159265 17.10.2014 12:46 # +2
inkanus-gray 17.10.2014 00:29 # 0
guest 17.10.2014 01:55 # −7
bormand 17.10.2014 05:14 # 0
TarasB 17.10.2014 12:36 # 0
absolut 17.10.2014 15:46 # 0
guest 17.10.2014 01:54 # −8
laMer007 17.10.2014 11:55 # 0
Хватит уже всё считать во время компиляции. Посчитайте во время инициализации приложения.
3.14159265 17.10.2014 12:07 # +4
3.14159265 17.10.2014 12:11 # +6
Вот-вот-вот. Угощайтесь
Мда, печально наблюдать, как крестобляди дрочат на это бесполезное решение, которое по своей практической полезности сравнимо только с умением какать вверх ногами.
Уже давно компиляторы научились считать константы при компиляции, а крестобляди по прежнему дрочат на шаблоны, которые никто, кроме них, прочитать не сможет (ну или сможет, только хорошенько курнув).
Очень жаль, что мои мысли, которые я пытался тут высказать, потонули в крестоблядском кукареканьи о "нестандартном мышлении" и "отличном решении".
[...]У шаблонного варианта нет вообще никакого оправдания. Он по всем параметрам хуже нормального решения. И только тупые крестобляди дрочат на него, потому что "вау, оно типа сложное, в других языках так не сделать". В дрочении на бесполезную сложность заключается вся суть крестобляди.
defecate-plusplus 17.10.2014 12:17 # +1
3.5 минуты на поиск ереси
гугл нервно курит в сторонке
TarasB 17.10.2014 12:35 # 0
inkanus-gray 17.10.2014 12:44 # 0
TarasB 17.10.2014 12:52 # +1
, а ламер опять глючит.
mid пишет в третий параметр полусумму между первым и вторым
Я хотел попробовать разные N, поэтому вместо хардкода запилил шаблон.
Обычная рекурсия не оптимизируется. То есть второй вызов превращается в возврат на начало, но первый вызов остаётся вызовом и проверка if(N=1) при простой рекурсии никуда не девается.
TarasB 17.10.2014 12:35 # 0
3.14159265 16.10.2014 20:45 # +1
Ты что??? Какой еще c++1.?
Тарас перейдет на c++1... не раньше чем появится c++2... Старый стандарт программы не испортит.
guest 17.10.2014 01:54 # −6
guest 17.10.2014 01:54 # −6
guest 17.10.2014 20:21 # −5