Clang Project

clang_source_code/test/SemaCXX/no-rtti.cpp
1// RUN: %clang_cc1 -fsyntax-only -verify -fno-rtti %s
2
3namespace std {
4  class type_info;
5}
6
7void f()
8{
9  (void)typeid(int); // expected-error {{use of typeid requires -frtti}}
10}
11
12namespace {
13struct A {
14  virtual ~A(){};
15};
16
17struct B : public A {
18  B() : A() {}
19};
20}
21
22bool isa_B(A *a) {
23  return dynamic_cast<B *>(a) != 0; // expected-error {{use of dynamic_cast requires -frtti}}
24}
25
26void* getMostDerived(A* a) {
27  // This cast does not use RTTI.
28  return dynamic_cast<void *>(a);
29}
30