InvokeInterfaceGetter

Материал из CAMaaS preliminary wiki
Перейти к навигации Перейти к поиску
template <std::size_t iReturnIndex, class _Callable, class ... _Args>
auto InvokeInterfaceGetter(_Callable&& fn, _Args&&...args)
    -> typename invoke_interface_return_type<iReturnIndex, _Callable>::type; //1
template <class _Callable, class ... _Args>
auto InvokeInterfaceGetter(_Callable&& fn, _Args&&...args)
    -> typename invoke_interface_return_type<Chusov::function_traits<_Callable>::number_of_parameters - 1, _Callable>::type; //2

Вызывает указанный Callable объект, возвращающий return_code_t, и, если объект возвращает код успешного завершения, возвращает указанный индексом выходной параметр через return - иначе генерирует исключение типа Chusov::Exceptions::ChsvCodeException.

  1. Возвращает значение выходного параметра с индексом iReturnIndex в списке параметров объекта _Callable в результате вызова fn.
  2. Возвращает значение последнего параметра в списке параметров объекта _Callable в результате вызова fn.
Параметры шаблона
iReturnIndexЗадает индекс выходного параметра списке параметров объекта fn. Если fn - метод класса, то индекс не должен учитывать первый скрытый параметр this.
_CallableТип Callable-объекта, который вызывается функцией. Прототип объекта должен позволять однозначно выполнить вызов объекта с аргументами std::forward<_Args>(args)..., между которыми, в позицию с индексом iReturnIndex (iReturnIndex + 1, если _Callable является методом класса) вставлен указатель или lvalue-ссылка на объект действительного типа typename invoke_interface_return_type<iReturnIndex, _Callable>::type.
_Args...Тип входных аргументов, над которыми вызывается Callable-объект fn. При вызове fn между этими аргументами, в зависимости от типа _Callable вставляется указатель или ссылка на объект, который затем возвращается функцией InvokeInterfaceGetter.
Параметры
fnФункциональный объект типа _Callable, который вызывается над аргументами args....
...argsНабор входных аргументов, над которыми вызывается Callable-объект fn. Если объект fn является нестатическим методом класса, то первым аргуметом должен являтся экземпляр этого класса, над которым вызывается метод. В этом случае индекс iReturnIndex не учитывает первый параметр.
Возвращаемое значение:
Значение выходного параметра с индексом iReturnIndex в результате вызова функтора fn.
Возможные исключения
Chusov::Exceptions::ChsvCodeExceptionИсключение, соответствующее коду ошибочного завершения, если последний возвращается объектом fn.
См. также
InvokeInterfaceВызывает интерфейсный метод, возвращающий код return_code_t, с указанным набором аргументов и, если интерфейсный метод возвращает код ошибочного завершения, генерирует исключение Chusov::Exceptions::ChsvCodeException.
InvokeInterfaceSetterВызывает интерфейсный метод, возвращающий код return_code_t, с указанным набором аргументов и, если интерфейсный метод возвращает код ошибочного завершения, генерирует исключение Chusov::Exceptions::ChsvCodeException.
InvokeDomainInterfaceGetterВызывает указанный Callable объект, возвращающий domain_response_code_t, и, если объект возвращает код успешного завершения, возвращает указанный индексом выходной параметр через return - иначе генерирует исключение типа drc_exception.
Chusov::function_traitsМетафункция, возвращающая сведения о прототипе Callable-объекта.
Пример