Решил глянуть код С++ -ного pow() . Как это работает?
_Check_return_ inline double pow(_In_ double _Xx, _In_ int _Yx) noexcept
{
if (_Yx == 2)
return (_Xx * _Xx);
return (_CSTD pow(_Xx, static_cast<double>(_Yx)));
}
А конкретно эта строка:
(_CSTD pow(_Xx, static_cast<double>(_Yx)))
static_cast<double>(_Yx)- это приведение к типу double
А что такое _CSTD?
И что такое _In_?
Код CSTD:
#ifdef __cplusplus
#define _CSTD ::
#define _EXTERN_C extern "C" {
#define _END_EXTERN_C }
#else /* ^^^ __cplusplus ^^^ // vvv !__cplusplus vvv */
#define _CSTD
#define _EXTERN_C
#define _END_EXTERN_C
#endif /* __cplusplus */
_In_ - это аннотация SAL
_CSTD - это макрос раскрывающийся в обращение к глобальному пространству имен ::
pow - это вызов реализации pow из С
Какой-то макрос, зависящий от реализации. Смысл в том, что если на вход даётся значение интегрального типа, то вызываем перегрузку для типа double
_In_, скорее всего, макрос или алиас для спецификаторов типа (например, const)
Ну вот, теперь сразу видно что это ::
#define _CSTD ::
Сборка персонального компьютера от Artline: умный выбор для современных пользователей