// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -verify -std=gnu++11 -fms-extensions -Wno-microsoft %s // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -verify -std=gnu++14 -fms-extensions -Wno-microsoft %s // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fsyntax-only -verify -std=gnu++1z -fms-extensions -Wno-microsoft %s // libstdc++ uses __remove_cv as an alias, so we make our transform type traits alias-revertible template struct Same { static constexpr auto value = __is_same(T, U); }; template using __remove_const = int; // expected-warning{{keyword '__remove_const' will be made available as an identifier here}} template using A = Same<__remove_const, __remove_const>; template using __remove_restrict = int; // expected-warning{{keyword '__remove_restrict' will be made available as an identifier here}} template using B = Same<__remove_restrict, __remove_restrict>; template using __remove_volatile = int; // expected-warning{{keyword '__remove_volatile' will be made available as an identifier here}} template using C = Same<__remove_volatile, __remove_volatile>; template using __remove_cv = int; // expected-warning{{keyword '__remove_cv' will be made available as an identifier here}} template using D = Same<__remove_cv, __remove_cv>; template using __add_pointer = int; // expected-warning{{keyword '__add_pointer' will be made available as an identifier here}} template using E = Same<__add_pointer, __add_pointer>; template using __remove_pointer = int; // expected-warning{{keyword '__remove_pointer' will be made available as an identifier here}} template using F = Same<__remove_pointer, __remove_pointer>; template using __add_lvalue_reference = int; // expected-warning{{keyword '__add_lvalue_reference' will be made available as an identifier here}} template using G = Same<__add_lvalue_reference, __add_lvalue_reference>; template using __add_rvalue_reference = int; // expected-warning{{keyword '__add_rvalue_reference' will be made available as an identifier here}} template using H = Same<__add_rvalue_reference, __add_rvalue_reference>; template using __remove_reference_t = int; // expected-warning{{keyword '__remove_reference_t' will be made available as an identifier here}} template using I = Same<__remove_reference_t, __remove_reference_t>; template using __remove_cvref = int; // expected-warning{{keyword '__remove_cvref' will be made available as an identifier here}} template using J = Same<__remove_cvref, __remove_cvref>; template using __decay = int; // expected-warning{{keyword '__decay' will be made available as an identifier here}} template using K = Same<__decay, __decay>; template using __make_signed = int; // expected-warning{{keyword '__make_signed' will be made available as an identifier here}} template using L = Same<__make_signed, __make_signed>; template using __make_unsigned = int; // expected-warning{{keyword '__make_unsigned' will be made available as an identifier here}} template using M = Same<__make_unsigned, __make_unsigned>; template using __remove_extent = int; // expected-warning{{keyword '__remove_extent' will be made available as an identifier here}} template using N = Same<__remove_extent, __remove_extent>; template using __remove_all_extents = int; // expected-warning{{keyword '__remove_all_extents' will be made available as an identifier here}} template using O = Same<__remove_all_extents, __remove_all_extents>;