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

--- Comment #6 from David Binderman <dcb314 at hotmail dot com> ---
For this C++ code:

cvise $ more bug1108.cc
template <typename _Tp>
constexpr bool is_trivially_destructible_v = __is_trivially_destructible(_Tp);
template <typename... _Types> struct _Traits {
  static constexpr bool _S_trivial_dtor =
      (is_trivially_destructible_v<_Types> && ...);
  static constexpr bool _S_trivial_move_assign = _S_trivial_dtor;
};
template <int> struct _Move_assign_base {};
template <typename... _Types>
using _Move_assign_alias =
    _Move_assign_base<_Traits<_Types...>::_S_trivial_move_assign>;
template <typename... _Types>
struct _Variant_base : _Move_assign_alias<_Types...> {};
template <typename _Tp> struct vector {
  const _Tp data();
};
template <typename T> using _variant = _Variant_base<vector<T>>;
template <template <typename> typename K> struct y_comb : K<y_comb<K>> {};
void get(const y_comb<_variant>) {}
cvise $ 

Recent g++ does this:

cvise $ ~/gcc/results/bin/g++ -g -fpack-struct bug1108.cc 2>&1 | grep    error:
bug1108.cc:14:32: error: type variant differs by TYPE_PACKED
bug1108.cc:14:32: internal compiler error: ‘verify_type’ failed
cvise $

Reply via email to