Ошибка компиляции C++?
static bool compare_asc(const T i, const T j);   //Для сортировки по возрастанию
static bool compare_desc(const T i, const T j); //По убыванию

А так?
compare_asc и compare_desc должны быть статическими, при таком использовании