This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/17344] spurious error
- From: "bangerth at dealii dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 16 Sep 2004 15:44:27 -0000
- Subject: [Bug c++/17344] spurious error
- References: <20040907100712.17344.igodard@pacbell.net>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Additional Comments From bangerth at dealii dot org 2004-09-16 15:44 -------
About the unrelatedness of some text: when I replace the definition
of class pile and everything below by this code
-----------------
struct pile: public equalityMixin<pile>
{
template<template<typename>class raw>
pile(const raw<void>& r) : base(pileBase::init(r)) {}
pile(const pile& p) : base(p.base) {}
pileBase& base;
};
void foo() {
bitset<int, 1, 2> bed;
bed != bed;
}
----------------------
then I still see the problem. This comes from the fact that the operator
!= you want to call is injected by the class equalityMixin, which is
instantiated by the declaration of class pile. If you don't declare this
class, then we have one less overload. As to why we get the error
I don't know yet.
W.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17344