به خاطر این که vector از نوع bool با vector شامل عناصر دیگه یک فرق داره و اونم اینه که برای مصرف بهینه حافظه هر 8 تا bool داخل یک bit ذخیره میشن برای همین شما نمی تونی با & به آدرس خونه اول دسترسی داشته باشی .
البته برای حل این مشکل می تونی از refrence استفاده کنی :
template<class T>
void func(T *a)
{
//...
}
void func(std::vector<bool>::reference a)
{
//...
}
int main( )
{
std::vector<int> l1(2);
func(&l1[0]);
std::vector<bool> l2(2);
func(l2[0]);
}