annotate gcc/testsuite/g++.dg/template/pr61745.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children 1830386684a0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 // PR c++/61745
kono
parents:
diff changeset
2
kono
parents:
diff changeset
3 template <typename INT,INT P> class Zp;
kono
parents:
diff changeset
4
kono
parents:
diff changeset
5 template <typename INT,INT P>
kono
parents:
diff changeset
6 Zp<INT,P> operator-(const Zp<INT,P>& a, const Zp<INT,P>& b);
kono
parents:
diff changeset
7
kono
parents:
diff changeset
8 template <typename INT,INT P>
kono
parents:
diff changeset
9 class Zp {
kono
parents:
diff changeset
10 public:
kono
parents:
diff changeset
11 static const INT p = P;
kono
parents:
diff changeset
12 private:
kono
parents:
diff changeset
13 INT val;
kono
parents:
diff changeset
14 public:
kono
parents:
diff changeset
15 Zp() : val(0) {}
kono
parents:
diff changeset
16 Zp( INT x ) : val(x%p) { if (x < 0 ) x+= p; }
kono
parents:
diff changeset
17
kono
parents:
diff changeset
18 // this compiles only if the following definition is moved
kono
parents:
diff changeset
19 // AFTER the friend declaration
kono
parents:
diff changeset
20 Zp operator-() const { return Zp(p-val); }
kono
parents:
diff changeset
21 friend Zp<INT,P> operator- <>(const Zp<INT,P>& a, const Zp<INT,P>& b); // { dg-error "declaration|expected" }
kono
parents:
diff changeset
22 };