/ test / catch_function_02.pass.cpp
catch_function_02.pass.cpp
 1  //===---------------------- catch_function_02.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  // UNSUPPORTED: no-exceptions
11  
12  #include <cassert>
13  
14  void f() {}
15  
16  int main(int, char**)
17  {
18      typedef void Function();
19      try
20      {
21          throw f;     // converts to void (*)()
22          assert(false);
23      }
24      catch (Function b)  // equivalent to void (*)()
25      {
26      }
27      catch (...)
28      {
29          assert(false);
30      }
31  
32      return 0;
33  }