llvm-project

Форк
0
/
catch_array_01.pass.cpp 
36 строк · 917.0 Байт
1
//===----------------------------------------------------------------------===//
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(int, char**)
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
    return 0;
36
}
37

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.