Сохраняет ли boost::any копию или ссылку / указатель?

Следующий код безопасен?

boost::any any_value;

{
    std::string s = "HelloWorld";
    any_value = s;
}

std::string ss = any_cast<std::string>(any_value);

2 ответа

Решение

Из Boost.Any документы:

template<typename ValueType> any & operator=(const ValueType & rhs);

Делает копию rhs, отбрасывая предыдущее содержимое, так что новое содержимое по типу и значению эквивалентно rhs.

Так что да, это безопасно. Копия строки сохраняется, а не ссылка на нее.

Да, это. boost::any берет все, делая копию этого, предполагая, что тип выполняет Copyable концепция.

Другие вопросы по тегам