basic_string,该怎么处理

basic_string
namespace std
{
  template<>
    struct char_traits<unsigned char>
    {
    ……
    };
}

typedef std::basic_string <unsigned char> mystring_t;

上面是一个类型的定义,应该是一个basic_string模板,最后那条语句怎么解?
mystring_t  str;
void*    data;
size_t  size;

str = mystring_t ((unsigned char*) data , size );

是构造一个 mystring_t 类型的对象,它的size大小和字符串内容?
------解决方案--------------------
引用
上面是一个类型的定义,应该是一个basic_string模板,最后那条语句怎么解?


typedef是申明语句, 不是定义。 
引用
str = mystring_t ((unsigned char*) data , size );

std::basic_string的一个构造函数原型如下: 

basic_string (const charT* s, size_type n,
              const allocator_type& alloc = allocator_type());

此处charT是unsigned char。 
]str = mystring_t ((unsigned char*) data , size );

先构造一个无名临时对象, 然后从这个无名对象赋值拷贝(或赋值移动, C++ 11)到str