#include <stdio.h>

aspect introductions {
  pointcut target() = "IntroductionTarget";

 public: 

  advice target() : struct myStruct {
    int member1;
    long member2;
    float member3;
  };

  advice target() : int myArray1[10];
  advice target() : myStruct myArray2[10];

};

class IntroductionTarget {
};

aspect abstract_trace_construction {
  pointcut virtual classes() = 0;

 private:
  advice construction(classes()) : before () {
    printf("in %s\n",JoinPoint::signature());
  }  
};

aspect trace : public abstract_trace_construction {
  pointcut classes() = "IntroductionTarget";
};

int main () {
  printf ("Bug 216: copy constructor generation\n");
  printf ("====================================\n");
  IntroductionTarget it;
  printf ("====================================\n");
  return 0;
}
