所以我有一个字符串类型的轻量级:
typedef boost::flyweight< std::string, boost::flyweights::intermodule_holder > SymbolName_t;
我想将这个实例推送到它们的向量中,但是天真的方法行不通:
void PushSome( std::vector < SymbolName_t >& list)
{
std::string& str = getSomeStr();
list.push_back( str ); // <--- won't compile
}
所以我添加了一个临时构造函数:
void PushSome( std::vector < SymbolName_t >& list)
{
std::string& str = getSomeStr();
list.push_back( SymbolName_t(str) ); // <--- compiles ok
}
我的问题是:考虑到语言的限制,这种方法是最优的吗?以其他方式实现这一点有什么好处,例如,通过提供静态转换运算符?我不认为通过非显式构造函数进行隐式转换是一个有效的选项,因为这需要修改boost::flyweight
模板