OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.2.2/] [gcc/] [testsuite/] [g++.dg/] [other/] [copy1.C] - Diff between revs 149 and 154

Only display areas with differences | Details | Blame | View Log

Rev 149 Rev 154
// { dg-do run }
// { dg-do run }
// Copyright (C) 2000 Free Software Foundation, Inc.
// Copyright (C) 2000 Free Software Foundation, Inc.
// Contributed by Nathan Sidwell 30 Nov 2001 
// Contributed by Nathan Sidwell 30 Nov 2001 
// PR 87
// PR 87
int assign = 0;
int assign = 0;
int ctor = 0;
int ctor = 0;
int assignC = 0;
int assignC = 0;
struct A {
struct A {
  int i;
  int i;
  template
  template
  void operator=(const T&) const
  void operator=(const T&) const
  {
  {
    assign = 1;
    assign = 1;
  }
  }
  A () : i (0) {}
  A () : i (0) {}
  template  A (const T &)
  template  A (const T &)
  {
  {
    ctor = 1;
    ctor = 1;
  }
  }
};
};
struct B : A
struct B : A
{
{
};
};
struct C
struct C
{
{
  int i;
  int i;
  C (int i_) :i (i_) {}
  C (int i_) :i (i_) {}
  template 
  template 
  void operator= (const C &)
  void operator= (const C &)
  {
  {
    assignC = 1;
    assignC = 1;
  }
  }
};
};
int main()
int main()
{
{
  const A a;
  const A a;
  A b;
  A b;
  B c;
  B c;
  b = a;
  b = a;
  if (assign)
  if (assign)
    return 5;
    return 5;
  b.i = 100;
  b.i = 100;
  c.i = 200;
  c.i = 200;
  a = b;
  a = b;
  if (!assign)
  if (!assign)
    return 1;
    return 1;
  if (a.i)
  if (a.i)
    return 2;
    return 2;
  A e (b);
  A e (b);
  if (ctor)
  if (ctor)
    return 3;
    return 3;
  A d (c);
  A d (c);
  if (!ctor)
  if (!ctor)
    return 4;
    return 4;
  C c0 (0);
  C c0 (0);
  C c1 (1);
  C c1 (1);
  c0 = c1;
  c0 = c1;
  if (assignC)
  if (assignC)
    return 5;
    return 5;
  return 0;
  return 0;
}
}
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.