Resubmission of D100646 now making sure that we handle cases were __builtin_memcpy_inline is not available.
So unfortunately __has_builtin only exists from GCC 10 on.
For clang it's supported from clang 3.0.
I can update it slightly by using #if defined(__clang) || (defined(__GNUC__) && __GNUC__ >= 10) but it doesn't add much value since GCC does not implement __builtin_memcpy_inline anyways.
As I explained above __has_builtin does not exist for most versions of GCC