// RUN: %clang_cc1 -fsyntax-only -fobjc-arc -fobjc-runtime-has-weak -verify %s // expected-no-diagnostics template void test_is_pointer() { static_assert(__is_pointer(T), ""); static_assert(__is_pointer(T __weak), ""); static_assert(__is_pointer(T __strong), ""); static_assert(__is_pointer(T __autoreleasing), ""); static_assert(__is_pointer(T __unsafe_unretained), ""); static_assert(__is_pointer(T __weak const), ""); static_assert(__is_pointer(T __strong const), ""); static_assert(__is_pointer(T __autoreleasing const), ""); static_assert(__is_pointer(T __unsafe_unretained const), ""); static_assert(__is_pointer(T __weak volatile), ""); static_assert(__is_pointer(T __strong volatile), ""); static_assert(__is_pointer(T __autoreleasing volatile), ""); static_assert(__is_pointer(T __unsafe_unretained volatile), ""); static_assert(__is_pointer(T __weak const volatile), ""); static_assert(__is_pointer(T __strong const volatile), ""); static_assert(__is_pointer(T __autoreleasing const volatile), ""); static_assert(__is_pointer(T __unsafe_unretained const volatile), ""); } @class Foo; int main(int, char**) { test_is_pointer(); test_is_pointer(); test_is_pointer(); test_is_pointer(); test_is_pointer(); test_is_pointer(); test_is_pointer(); test_is_pointer(); test_is_pointer(); test_is_pointer(); test_is_pointer(); test_is_pointer(); return 0; }