Как использовать интринсик
#pragma intrinsic(_BitScanForward)
В моем коомпиляторе не поддерживает я библиотека intrin.h
У gcc есть аналогичный интринсик __builtin_ctz
. Согласно википедии, должен работать и в clang.
Документация на _BitScanForward
:
Search the mask data from least significant bit (LSB) to the most significant bit (MSB) for a set bit (1).
Parameters
[out] Index Loaded with the bit position of the first set bit (1) found.
Remarks
If a set bit is found, the bit position of the first set bit found is returned in the first parameter. If no set bit is found, 0 is returned; otherwise, 1 is returned.
Документация на __builtin_ctz
в gcc:
Built-in Function: int __builtin_ctz (unsigned int x)
Returns the number of trailing 0-bits in x, starting at the least significant bit position. If x is 0, the result is undefined.
Эти определения кажутся равносильными (но _BitScanForward
возвращает результат через out-параметр, а не через возвращаемое значение), за исключением случая нулевого аргумента. В этом случае _BitScanForward
возвращает нулевой результат. Для clang вам нужно либо проверять на 0 параметр, либо воспользоваться аналогичным __builtin_ffs
(который возвращается результат на единицу больше).
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Ну вообщем цель такова, чтобы в функцию можно было передать либо обьект моего класса, либо же cout , cin
Пытался написать функцию, которая делает то, что указано в заголовке: