, поэтому у меня есть налетный вес типа строки:
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
шаблон