Compiler projects using llvm
// RUN: %clang_cc1 %s -pedantic -verify

namespace PointerRvalues {

void f(__global int *__constant *a, const __global int *__constant *b) {
  using T = decltype(true ? +a : +b);
  using T = const __global int *const __constant *;
}

void g(const __global int *a, __generic int *b) {
  using T = decltype(true ? +a : +b);
  using T = const __generic int *;
}

void h(const __global int **a, __generic int **b) {
  using T = decltype(true ? +a : +b); // expected-error {{incompatible operand types}}
}

void i(__global int **a, __generic int **b) {
  using T = decltype(true ? +a : +b); // expected-error {{incompatible operand types}}
}

}