Commit 2a2c9357 by Paolo Carlini Committed by Paolo Carlini

re PR c++/61745 (template friend for dyadic operator- is only accepted if the…

re PR c++/61745 (template friend for dyadic operator- is only accepted if the monadic operator- follows it)

2014-09-18  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/61745
	* g++.dg/template/pr61745.C: New.

From-SVN: r215345
parent 1d2af993
2014-09-18 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/61745
* g++.dg/template/pr61745.C: New.
2014-09-17 Marek Polacek <polacek@redhat.com> 2014-09-17 Marek Polacek <polacek@redhat.com>
PR c/61854 PR c/61854
......
// PR c++/61745
template <typename INT,INT P> class Zp;
template <typename INT,INT P>
Zp<INT,P> operator-(const Zp<INT,P>& a, const Zp<INT,P>& b);
template <typename INT,INT P>
class Zp {
public:
static const INT p = P;
private:
INT val;
public:
Zp() : val(0) {}
Zp( INT x ) : val(x%p) { if (x < 0 ) x+= p; }
// this compiles only if the following definition is moved
// AFTER the friend declaration
Zp operator-() const { return Zp(p-val); }
friend Zp<INT,P> operator- <>(const Zp<INT,P>& a, const Zp<INT,P>& b); // { dg-error "declaration|expected" }
};
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment