// I, Howard Hinnant, hereby place this code in the public domain. | |
// Test: Unamed rvalue references are treated as lvalues. | |
// { dg-do compile } | |
// { dg-options "-std=c++0x" } | |
template <bool> struct sa; | |
template <> struct sa<true> {}; | |
struct one {char x[1];}; | |
struct two {char x[2];}; | |
struct A {}; | |
one foo(const A&) {return one();} | |
two foo(A&&) {return two();} | |
A&& source() {static A a; return a;} | |
int test1() | |
{ | |
sa<sizeof(foo(source())) == 2> t1; | |
return 0; | |
} | |
int main() | |
{ | |
return test1(); | |
} |