Line 2381 of file cl.hpp (version 1.2.1, rev. 15 OpenCL 1.2) contains the following:
#if !defined(__APPLE__) || !defined(__MACOS)
It was supposedly meant to be a negation of:
#if defined(__APPLE__) || defined(__MACOS)
So, the result should be:
#if !defined(__APPLE__) && !defined(__MACOS)
(logical AND instead of OR).
Current version works properly if both __APPLE__ and __MACOS macros are defined.
If, in the future releases of MacOS, this changes and, e.g., __MACOS is not defined, then the current version will not work properly.
I've fixed this in the Khronos-internal version. It will go out with the next cl.hpp release.