こんな簡単なコードが通りません。

std::basic_string<unsigned char> str;
const unsigned char* p = (const unsigned char*)"abc";
str = p; //もしくはstr.assign(p);

どおして通らないのかどなたかわかりません?