[Bug c++/81589] Possible False-Positive with decltype

marxin at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Feb 8 12:42:00 GMT 2018


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81589

Martin Liška <marxin at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |marxin at gcc dot gnu.org

--- Comment #3 from Martin Liška <marxin at gcc dot gnu.org> ---
I see the same problem (reduced from Chromium package):

cat chrome.ii
template <typename b, b c> struct d { static constexpr b e = c; };
template <typename> struct aa;
template <typename...> struct f;
template <typename g, typename h> struct f<g, h> : aa<g>::i {};
template <typename b>
struct j : f<b, d<bool, __is_trivially_constructible(b, b)>> {};
template <typename> struct aa { typedef d<bool, false> i; };
template <typename k> struct l { typename k::ab ab; };
template <typename> class m { typedef int ab; };
class n {};
struct o {
  template <typename> using ac = n;
};
struct s : o {
  struct t {
    typedef ac<int> ad;
  };
};
template <typename ae, typename af> void p(ae, af) { typename l<ae>::ag q; }
template <typename ae, typename af, typename b> void r(ae ah, af ai, b) {
  p(ah, ai);
}
template <typename u, bool = j<u>::e> struct aj {};
template <typename u> class w { aj<u> a; };
struct x {
  s::t::ad y();
  x(long, n);
  int ak;
};
template <typename> class z : x {
  typedef m<z> al;

public:
  z(const z &) : x(0, y()) {
    n v;
    r(am(), ak, v);
  }
  al am();
};
class SerializedHandle;
using an = SerializedHandle;
w<z<an>> a;


More information about the Gcc-bugs mailing list