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

--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
On one side, some code could be relying on bug compatibility and so it would be
undesirable to change it on release branches, on the other side the current
behavior there is just weird,
#include <type_traits>

template <typename> struct AbstractTemplate {
  virtual ~AbstractTemplate() = 0;
};

#ifdef D
struct S : AbstractTemplate<int> {};
#endif
bool a = std::is_default_constructible<AbstractTemplate<int> >::value;

a is true if D is not defined and false if D is defined.  And one can't really
construct those abstract template classes...

Reply via email to