Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 
 

30 linhas
702 B

  1. #include "decaf/expr.hxx"
  2. class Foo {
  3. private:
  4. template<BinOp OP, class L, class R, class T> friend class BinExpr;
  5. template<UnOp OP, class R, class T> friend class UnExpr;
  6. template<class T> friend struct Reify;
  7. Foo(const NOINIT&) {}
  8. public:
  9. int x;
  10. Foo(int x) : x(x) {}
  11. };
  12. namespace decaf { namespace internal {
  13. DECLARE_BINOP(ADD,Foo,Foo,Foo,out.x = l.x+r.x)
  14. DECLARE_BINOP(SUB,Foo,Foo,Foo,out.x = l.x-r.x)
  15. DECLARE_BINOP(MUL,Foo,Foo,Foo,out.x = l.x*r.x)
  16. DECLARE_BINOP(EQ,Foo,Foo,bool,out = l.x==r.x)
  17. DECLARE_PARTIAL_UNOP(INV,Foo,Foo,out.x = 1/r.x; return (r.x!=0))
  18. }}
  19. Foo frobble() {
  20. Foo a(1);
  21. a = a+a+a;
  22. a = a*a;
  23. a = a/a;
  24. (void)(a==(a+a));
  25. return a;
  26. }