decltype.cpp revision 762bb9d0ad20320b9f97a841dce57ba5e8e48b07
1762bb9d0ad20320b9f97a841dce57ba5e8e48b07Richard Smith// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
2f801dcff43b49509bf758e213de56288bd3e2a2eDouglas Gregor
3f801dcff43b49509bf758e213de56288bd3e2a2eDouglas Gregor// PR5290
4f801dcff43b49509bf758e213de56288bd3e2a2eDouglas Gregorint const f0();
5f801dcff43b49509bf758e213de56288bd3e2a2eDouglas Gregorvoid f0_test() {
635e12c90c1b107a75c5615aa76fdbd403661aaa6Douglas Gregor  decltype(0, f0()) i = 0;
7f801dcff43b49509bf758e213de56288bd3e2a2eDouglas Gregor  i = 0;
8f801dcff43b49509bf758e213de56288bd3e2a2eDouglas Gregor}
9f801dcff43b49509bf758e213de56288bd3e2a2eDouglas Gregor
10f801dcff43b49509bf758e213de56288bd3e2a2eDouglas Gregorstruct A { int a[1]; A() { } };
11f801dcff43b49509bf758e213de56288bd3e2a2eDouglas Gregortypedef A const AC;
12f801dcff43b49509bf758e213de56288bd3e2a2eDouglas Gregorint &f1(int*);
13f801dcff43b49509bf758e213de56288bd3e2a2eDouglas Gregorfloat &f2(int const*);
14f801dcff43b49509bf758e213de56288bd3e2a2eDouglas Gregor
15f801dcff43b49509bf758e213de56288bd3e2a2eDouglas Gregorvoid test_f2() {
16f801dcff43b49509bf758e213de56288bd3e2a2eDouglas Gregor  float &fr = f2(AC().a);
17f801dcff43b49509bf758e213de56288bd3e2a2eDouglas Gregor}
18f801dcff43b49509bf758e213de56288bd3e2a2eDouglas Gregor
19e3d49b44ad0596b2998ecf2e7ca78d59188920e5Francois Pichetnamespace pr10154 {
20e3d49b44ad0596b2998ecf2e7ca78d59188920e5Francois Pichet  class A{
21e3d49b44ad0596b2998ecf2e7ca78d59188920e5Francois Pichet      A(decltype(nullptr) param);
22e3d49b44ad0596b2998ecf2e7ca78d59188920e5Francois Pichet  };
23e3d49b44ad0596b2998ecf2e7ca78d59188920e5Francois Pichet}