On 2014.04.04 at 17:48 +0100, Nathan Sidwell wrote: > On 04/04/14 17:38, Markus Trippelsdorf wrote: > > > I'm not sure that this is a good idea. This changes the existing > > behavior of -Wnon-virtual-dtor and causes hundreds of new warnings when > > building LLVM. Wouldn't it make more sense to move the 3rd ed Weffc++ > > behavior to the -Weffc++ flag alone? > > IIUC you're using -Wnon-virtual-dtor on its own, is that right? What are the > class shapes where you're seeing this behaviour? > > AFAICT the -Wnon-virtual-dtor warning was an attempt to separate out that > particular -Weffc++ warning, but it was broken.
For example: markus@x4 tmp % cat test.ii class Option { public: virtual ~Option (); }; template <int> class opt_storage { }; template <int = 0> class A : Option, opt_storage<0> { }; template class A<>; markus@x4 tmp % g++ -Wnon-virtual-dtor -std=c++11 -c test.ii test.ii: In instantiation of ‘class A<>’: test.ii:12:16: required from here test.ii:9:26: warning: base class ‘class opt_storage<0>’ has accessible non-virtual destructor [-Wnon-virtual-dtor] template <int = 0> class A : Option, opt_storage<0> ^ markus@x4 tmp % clang++ -Wnon-virtual-dtor -std=c++11 -c test.ii markus@x4 tmp % (Before your commit) markus@x4 tmp % g++ -Wnon-virtual-dtor -std=c++11 -c test.ii markus@x4 tmp % -- Markus