16bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// RUN: %clang_cc1 -std=c++11 -verify %s -Wunused-parameter 26bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines 36bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// PR19303 : Make sure we don't get a unused expression warning for deleted and 46bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// defaulted functions 56bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines 66bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines// expected-no-diagnostics 76bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines 86bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinesclass A { 96bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinespublic: 106bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines int x; 116bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines A() = default; 126bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines ~A() = default; 136bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines A(const A &other) = delete; 146bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines 156bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines template <typename T> 166bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines void SetX(T x) { 176bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines this->x = x; 186bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines }; 196bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines 206bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines void SetX1(int x); 216bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines}; 226bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines 236bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinestemplate <> 246bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinesvoid A::SetX(A x) = delete; 256bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines 266bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinesclass B { 276bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hinespublic: 286bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines B() = default; 296bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines ~B() = default; 306bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines B(const B &other); 316bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines}; 326bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines 336bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen HinesB::B(const B &other) = default; 34