Я думаю, что есть два возможных решения этой проблемы.Либо вы разрешаете get_resolutions
принимать dev
по неконстантной ссылке (хотя для этого может потребоваться изменить код на сайте вызовов), либо вы заново внедряете first
самостоятельно.
Вариант 1
Просто замените
std::vector<cv::Size> get_resolutions(const rs2::device& dev)
на
std::vector<cv::Size> get_resolutions(rs2::device& dev)
Это, однако, также означает, что вы больше не можете вызывать get_resolutions
с временным объектом.
Вариант 2
Однако, глядя на источник библиотеки , я действительно не понимаю, почему first()
неконстантен.Все, что он делает, это вызывает query_sensors()
(который является const-квалифицированным, а также общедоступным) и обрабатывает результаты: 1
template<class T>
T first()
{
for (auto&& s : query_sensors())
{
if (auto t = s.as<T>()) return t;
}
throw rs2::error("Could not find requested sensor type!");
}
Это может бытьвариант с наименьшим влиянием: просто определите first()
самостоятельно, вне библиотеки, которая копирует эту функциональность:
template <class T>
T custom_first(const rs2::device& dev)
{
for (auto&& s : dev.query_sensors())
if (auto t = s.as<T>())
return t;
throw rs2::error("Could not find requested sensor type!");
}
1 Время для отправки отчета об ошибке, может быть?