Clang header file intrin.h declares the _BitScanForward as below.
static unsigned char _BitScanForward(unsigned long *_Index, unsigned long _Mask); When I include this header file and compile the source file, it is giving compilation error like below
error: inline function '_BitScanForward' is not defined [-Werror,-Wundefined-inline] _BitScanForward ( This is happening only in our code base but I am unable to reproduce this compilation error outside our environment.
Could somebody please explain what is this "-Wundefined-inline" mean?
Why is the question of "inline" coming into picture?
More Info: When put inline keyword just after static, its compiling without any issues
constexprinstead ofstaticorstatic inline. But question and answers would still be the same. One thing to note though. C++ compilers (at least my current compiler clang-12) may print this error also, if you have overloads that do not agree on the same qualifications. I.e. all overloads must be constexpr or all must be not. I don't know if this is mandated by the standard, I believe not. Maybe a language lawyer can clarify.