brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.4 KiB · 72cf93b Raw
47 lines · cpp
1// RUN: %clang_cc1 -std=c++11 %s -Wunused -Wno-unused-lambda-capture -verify2// expected-no-diagnostics3 4template<typename T, typename U>5struct is_same {6  static const bool value = false;7};8 9template<typename T>10struct is_same<T, T> {11  static const bool value = true;12};13 14void f3() {15  float x, &r = x;16  int i;17  int &ir = i;18  const int &irc = i;19 20  [=,&irc,&ir] {21    static_assert(is_same<decltype(((r))), float const&>::value, 22                  "should be const float&");23    static_assert(is_same<decltype(x), float>::value, "should be float");24    static_assert(is_same<decltype((x)), const float&>::value, 25                  "should be const float&");26    static_assert(is_same<decltype(r), float&>::value, "should be float&");27    static_assert(is_same<decltype(ir), int&>::value, "should be int&");28    static_assert(is_same<decltype((ir)), int&>::value, "should be int&");29    static_assert(is_same<decltype(irc), const int&>::value, 30                  "should be const int&");31    static_assert(is_same<decltype((irc)), const int&>::value, 32                  "should be const int&");33  }();34 35  [=] {36    [=] () mutable {37      static_assert(is_same<decltype(x), float>::value, "should be float");38      static_assert(is_same<decltype((x)), float&>::value, 39                    "should be float&");40    }();41  }();42 43  [&i] {44    static_assert(is_same<decltype((i)), int&>::value, "should be int&");45  }();46}47