URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [g++.dg/] [cpp0x/] [auto2.C] - Rev 693
Compare with Previous | Blame | View Log
// Positive test for auto
// { dg-do run }
// { dg-options "-std=c++0x" }
#include <typeinfo>
extern "C" void abort();
int f() {}
struct A
{
int i;
int f() {}
A operator+(A a) { return a; }
};
template <class T>
void g(T t)
{
auto x = t+t;
if (typeid(x) != typeid(t+t))
abort();
auto p = new auto(&t);
if (typeid(p) != typeid(T**))
abort();
}
int main()
{
auto i = 42;
if (typeid (i) != typeid (int))
abort();
auto *p = &i;
if (typeid (p) != typeid (int*))
abort();
auto *p2 = &p;
if (typeid (p2) != typeid (int**))
abort();
auto (*fp)() = f;
if (typeid (fp) != typeid (int (*)()))
abort();
auto A::* pm = &A::i;
if (typeid (pm) != typeid (int A::*))
abort();
auto (A::*pmf)() = &A::f;
if (typeid (pmf) != typeid (int (A::*)()))
abort();
g(42);
g(10.f);
g(A());
auto *p3 = new auto (i);
if (typeid (p3) != typeid (int*))
abort();
for (auto idx = i; idx != 0; idx = 0);
while (auto idx = 0);
if (auto idx = 1);
switch (auto s = i)
{
case 42:
break;
}
auto j = 42, k = 24;
}