Re: -Wenum-compare and template metaprogramming

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2017-05-03 11:26 +0100, Jonathan Wakely wrote:
> On 3 May 2017 at 05:41, Xi Ruoyao wrote:
> > In template metaprogramming, we may write something like
> > 
> > ~~~~~
> > template <typename A, typename B>
> > struct BetterType
> > {
> >   typedef If<(Priority<A>::value > Priority<B>::value), A, B>::type type;
> > };
> > ~~~~~
> > 
> > However, GCC -Wenum-compare (enabled by default) would complain
> > at each POT of BetterType.  It seems annoying.
> > 
> > Of course we can cast the operands of compare to int.  But should we
> > make GCC more clever and not to complain this causal idiom?
> 
> You're comparing unrelated enumeration types, which is what the
> warning is designed to warn about. Why should it not warn just because
> it's in a template?

No.  My point is, in this "enum hack" case we just use the enum values as
integer constants, not because they are in templates.

Maybe we could silence the warning for the enums has only one
enumerator with assigned value.

I got thousands of warnings yesterday compiling a package with many
enum hacks...
-- 
Xi Ruoyao <ryxi@xxxxxxxxxxxxxxxxx>
School of Aerospace Science and Technology, Xidian University




[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux