Apart from all the weird specialization stuff, what's wrong with vector< vector<bool> >?