volatileつけるとboolが呼ばれるみたいなんだけど
なぜなんでしょうか?

#include<iostream>
using namespace std;
void test(char*)
{
cout << "char*" << std::endl;
}
void test(bool)
{
cout << "bool" << std::endl;
}

int main()
{
test(static_cast<char*>("a")); //char*
test(static_cast<volatile char*>("a")); //bool
test(static_cast<const volatile char*>("a")); //bool
}