Home | History | Annotate | Download | only in SemaCXX
      1 // RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
      2 // rdar://20281011
      3 
      4 namespace std {
      5 template<class _Ep> class initializer_list { };
      6 }
      7 
      8 namespace cva {
      9 
     10 template <class VT, unsigned int ROWS = 0, unsigned int COLS = 0>
     11 class Matrix {
     12 public:
     13 
     14     typedef VT value_type;
     15     inline __attribute__((always_inline)) value_type& at();
     16 };
     17 
     18 template <class VT, unsigned int SIZE> using Vector = Matrix<VT, SIZE, 1>;
     19 
     20 template <class VT>
     21 using RGBValue = Vector<VT, 3>;
     22 using RGBFValue = RGBValue<float>;
     23 
     24 template <class VT> class Matrix<VT, 0, 0> { // expected-note {{passing argument to parameter here}}
     25 public:
     26     typedef VT value_type;
     27     Matrix(const unsigned int nRows, const unsigned int nColumns, const value_type* data = nullptr);
     28 
     29     Matrix(const std::initializer_list<value_type>& list) = delete; // expected-note {{'Matrix' has been explicitly marked deleted here}}
     30 
     31 };
     32 
     33 void getLaplacianClosedForm()
     34 {
     35     Matrix<double> winI(0, 3);
     36     RGBFValue* inputPreL;
     37     winI = { inputPreL->at() }; // expected-error {{call to deleted constructor of 'cva::Matrix<double, 0, 0> &&'}}
     38 }
     39 
     40 }
     41