I started reading the specification for OpenCL, and admit I am somewhat confused about the data types section with respect to 'double'.

based on 6.1.1, double is not a "built-in scaler data type."

based on 6.1.3, double is not an "other built-in data type."

So at this point, it seems either double is not built-in or it is not scaler.

The description for "long double" in table 6.4 in section 6.1.4, suggests that double is scaler. It is also apparent that the word double is a reserved data type.

So at this point, it seems that double is conclusively not built-in, but that perhaps a future version of OpenCL will support double.

However, continuing on with the specification, I find example code in:

"Section: Reinterpreting Types Using Unions"

that uses "double."

So, does this example code not meet the specification?