| // RUN: %clang_cc1 -fsyntax-only -fdump-record-layouts-complete %s | FileCheck %s |
| |
| struct a { |
| int x; |
| }; |
| |
| struct b { |
| char y; |
| } foo; |
| |
| class c {}; |
| |
| class d; |
| |
| template <typename> |
| struct s { |
| int x; |
| }; |
| |
| template <typename T> |
| struct ts { |
| T x; |
| }; |
| |
| template <> |
| struct ts<void> { |
| float f; |
| }; |
| |
| void f() { |
| ts<int> a; |
| ts<double> b; |
| ts<void> c; |
| } |
| |
| namespace gh83671 { |
| template <class _Tp, _Tp __v> |
| struct integral_constant { |
| static constexpr const _Tp value = __v; |
| typedef integral_constant type; |
| }; |
| |
| template <bool _Val> |
| using _BoolConstant = integral_constant<bool, _Val>; |
| |
| template <class _Tp, class _Up> |
| struct is_same : _BoolConstant<__is_same(_Tp, _Up)> {}; |
| |
| template < class _Tp > |
| class numeric_limits {}; |
| |
| template < class _Tp > |
| class numeric_limits< const _Tp > : public numeric_limits< _Tp > {}; |
| } |
| |
| namespace gh83684 { |
| template <class Pointer> |
| struct AllocationResult { |
| Pointer ptr = nullptr; |
| int count = 0; |
| }; |
| } |
| |
| // CHECK: 0 | struct a |
| // CHECK: 0 | struct b |
| // CHECK: 0 | class c |
| // CHECK: 0 | struct ts<void> |
| // CHECK-NEXT: 0 | float |
| // CHECK: 0 | struct ts<int> |
| // CHECK: 0 | struct ts<double> |
| // CHECK-NOT: 0 | class d |
| // CHECK-NOT: 0 | struct s |
| // CHECK-NOT: 0 | struct AllocationResult |