title: nullability specifier cannot be applied to non-pointer type error in Foundation?
body: <p>I'm trying to compile some Objective-C++ files in C++ cmake based project. I'm getting an error similar to this:</p>
  
  <pre><code>/Applications/CLion.app/Contents/bin/cmake/bin/cmake --build /Users/barakat/Desktop/dummy/cmake-build-debug --target dummy -- -j 2
  Scanning dependencies of target dummy
  [ 50%] Building CXX object CMakeFiles/dummy.dir/main.mm.o
  In file included from /Users/barakat/Desktop/dummy/main.mm:2:
  In file included from /System/Library/Frameworks/Metal.framework/Headers/Metal.h:9:
  In file included from /System/Library/Frameworks/Metal.framework/Headers/MTLTypes.h:8:
  In file included from /System/Library/Frameworks/Foundation.framework/Headers/Foundation.h:128:
  /System/Library/Frameworks/Foundation.framework/Headers/NSUUID.h:26:49: error: nullability specifier '_Nullable' cannot be applied to non-pointer type 'uuid_t' (aka 'unsigned char [16]')
  - (instancetype)initWithUUIDBytes:(const uuid_t _Nullable)bytes;
                                                  ^
  /System/Library/Frameworks/Foundation.framework/Headers/NSUUID.h:29:30: error: nullability specifier '_Nonnull' cannot be applied to non-pointer type 'uuid_t' (aka 'unsigned char [16]')
  - (void)getUUIDBytes:(uuid_t _Nonnull)uuid;
                               ^
  2 errors generated.
  make[3]: *** [CMakeFiles/dummy.dir/main.mm.o] Error 1
  make[2]: *** [CMakeFiles/dummy.dir/all] Error 2
  make[1]: *** [CMakeFiles/dummy.dir/rule] Error 2
  make: *** [dummy] Error 2
  </code></pre>
  
  <p>This is my first time working with Objective-C/C++ but the issue appears to be in some standard header? The <code>uuid_t</code> is defined (ultimately) as <code>unsigned char[16]</code>.</p>
  
  <p>Simplest code producing the error:</p>
  
  <pre><code>// main.mm
  #import &lt;Metal/Metal.h&gt;
  int main() {
    id &lt;MTLDevice&gt; device = MTLCreateSystemDefaultDevice();
  }
  </code></pre>
  
  <p>CMakeLists.txt:</p>
  
  <pre><code># CMakeLists.txt
  cmake_minimum_required(VERSION 3.0)
  project(dummy)
  set(CMAKE_CXX_STANDARD 11)
  add_executable(dummy main.mm)
  </code></pre>
  
  <p>Log (Xcode? Version 8.2.1):</p>
  
  <pre><code>/Applications/CLion.app/Contents/bin/cmake/bin/cmake -DCMAKE_BUILD_TYPE=Debug -G "CodeBlocks - Unix Makefiles" /Users/barakat/Desktop/dummy
  -- The C compiler identification is AppleClang 8.0.0.8000042
  -- The CXX compiler identification is AppleClang 8.0.0.8000042
  -- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
  -- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -- works
  -- Detecting C compiler ABI info
  -- Detecting C compiler ABI info - done
  -- Detecting C compile features
  -- Detecting C compile features - done
  -- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
  -- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -- works
  -- Detecting CXX compiler ABI info
  -- Detecting CXX compiler ABI info - done
  -- Detecting CXX compile features
  -- Detecting CXX compile features - done
  -- Configuring done
  -- Generating done
  -- Build files have been written to: /Users/barakat/Desktop/dummy/cmake-build-debug
  
  [Finished]
  </code></pre>