После продолжительного обсуждения объявлены победители конкурса Grand C++ Error Explosion Competition. Награды должны были объявить в двух номинациях. Участники первой соревновались по максимальному количеству ошибок на минимальный объём кода. Вторая номинация — творческая, там важно не количество и размер, а качество и красота глюков.
В итоге, абсолютным победителем назван программист Эд Хэнвей (Ed Hanway), приславший такую программу.
#include ".//.//.//.//jeh.cpp"
#include "jeh.cpp"
`
Программа Хэнвея вызывала в шесть раз больше сообщений об ошибках, чем программа ближайшего конкурента в этой номинации.
Победителем по количеству ошибок в категории Plain стал программист Крис Хопман с двойным include.
#include "set>.cpp"
#include "set>.cpp"
В категории «Чистые руки» было запрещено использование препроцессора и здесь победил Марк Алдораси с такой программой.
template<class T,class...>class
C{C<T*const,T,C>a;C<T,C>b;};C<int>c;
В категории «Лучшая обманка» (Best Cheat) победителем назван уже упоминавшийся Крис Хопман. Жюри особенно отметило «использование Perl, единственного языка, менее понятного, чем шаблоны C++».
/usr/include; perl -e "@c="x"x(2**16); while(1) {print @c}" 1>&2
Номинация «Самый неожиданный код».
template<class T>class L{L<T*>operator->()};L<int>i=i->
В номинации «самый правдоподобный код» победила работа Виктора Зверовича. По мнению жюри, подобная программа способна лишить желания жить любого, кто пытается в ней разобраться.
#include <map>
#include <algorithm>
template<class T,class U>void f(T,U u){std::vector<std::vector<T>>v;auto i=end(v);find(i,i,u);find(i,i,&u);U*p,**q,r(),s(U);find(i,i,&p);find(i,i,&q);find(i,i,r);find(i,i,&r);find(i,i,s);find(i,i,&s);}template<class T>void f(T t){f(t,0);f(t,0l);f(t,0u);f(t,0ul);f(t,0ll);f(t,.0);f(t,.0l);f(t,.0f);f(t,' ');f(t,L' ');f(t,u' ');f(t,U' ');f(t,"");f(t,L"");}int main(){f(0);f(0l);f(0u);f(0ul);f(0ll);f(.0);f(.0l);f(.0f);f(' ');f(L' ');f(u' ');f(U' ');f("");f(L"");f(u"");f(U"");}
Наконец, приз в номинации «Чистейшие руки» присуждён Джону Регеру с отличным использованием рекурсии.
struct x struct z<x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(x(y,x(y><y*,x(y*w>v<y*,w,x{}
Автор: alizar