1 //===---------------------- catch_array_01.cpp ----------------------------===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 // Can you have a catch clause of array type that catches anything? 10 11 // GCC incorrectly allows array types to be caught by reference. 12 // See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69372 13 // XFAIL: gcc 14 // UNSUPPORTED: no-exceptions 15 16 #include <cassert> 17 18 int main() 19 { 20 typedef char Array[4]; 21 Array a = {'H', 'i', '!', 0}; 22 try 23 { 24 throw a; // converts to char* 25 assert(false); 26 } 27 catch (Array& b) // can't catch char* 28 { 29 assert(false); 30 } 31 catch (...) 32 { 33 } 34 } 35