Анализатор PVS-Studio проверяет TortoiseGit
8 мин

В большинстве наших статей говорится об ошибках, найденных в различных проектах с помощью анализатора PVS-Studio. В этот раз для целью для проверки стал проект TortoiseGit.

Типизированный язык программирования

MagicClass::getInstance().getFooFactory().createFoo().killMePlease();

/* Move item from one list to another */
int move(list *from, list *to) {
__transaction_atomic {
node *n = pop(from);
push(to, n);
}
}

variadic templates, так как до сих пор привязан к 10й студии, где ничего этого нету. А чтобы долго не думать, где же можно бесполезно использовать variadic templates, пришла идея попробовать, как будет выглядеть Typelist. Для тех, кто ещё не знает, что это такое, я постараюсь объяснять по ходу дела, а тем, кому это скучно — может сразу пролистать вниз — попробуем написать подобие крестиков-ноликов с использованием Typelist.TypeList:struct deferred;
struct deadline;
struct disable;
template<class T, class Deferred = disable, class Deadline = disable>
struct some_container
typedef some_container<int, disable, deadline> deadline_container;
<source>
А хотелось бы
<source lang=cpp>
typedef some_container<int, deadline> deadline_container;
typedef some_container<int, deferred, deadline> full_container1;
typedef some_container<int, deadline, deferred> full_container1;

