так у меня есть мухи строк типа:строка грузиков преобразования строки: лучший вариант производительности
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
И потребность в временном, пока вы на нем. –