| // RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify -std=c++11 %s |
| // RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify -std=c++11 -Wno-return-stack-address -Wreturn-local-addr %s |
| void *&r = S<T>()[nullptr]; |
| namespace LocalTemporary { |
| T value(const T &t = T()) const { |
| ptr int1(const ptr &p = ptr()) { |
| ptr int2(const ptr &p = nullptr) { |
| const int *int4(const int &x = 5) { |
| const int *int5(const int &x) { |
| const int &x = 11; //expected-note{{binding reference variable 'x' here}} |
| return &x; //expected-warning{{returning address of local temporary object}} |
| const int &x2 = x; // expected-note{{binding reference variable 'x2' here}} |
| return &x2; // expected-warning{{address of stack memory associated with parameter 'x' returned}} |
| const int *int8(const int &x = 5) { |
| const int &x = 5; // expected-note{{binding reference variable 'x' here}} |
| const int &x2 = x; // expected-note{{binding reference variable 'x2' here}} |
| return &x2; // expected-warning{{returning address of local temporary object}} |