Этот вопрос в основном касается подхода к дизайну, и я хотел бы знать, как решать такие проблемы в современном языке C ++.
У меня есть библиотечная функция, которая определена как (это настоящая код из компилятора):
template <info::device param>
typename info::param_traits<info::device, param>::return_type
get_info() const;
Чтобы вызвать эту функцию, я мог бы написать что-то вроде:
some_device.get_info<cl::sycl::info::device::device_type>()
, где cl::sycl::info::device::device_type
- фактический параметр.
Там длинный список поддерживаемых параметров, и я хотел бы иметь коллекцию значений результатов (результатов различных вызовов функций).
В этот момент я мог бы сделать что-то вроде:
some_device.get_info<cl::sycl::info::device::param1>()
some_device.get_info<cl::sycl::info::device::param2>()
...
some_device.get_info<cl::sycl::info::device::paramN>()
но поскольку это ужасно, я ищу лучшее решение на C ++ 11/14.