blob: 71f821df0c48fc17fb187c4271be3a3f80d9bbdf [file] [log] [blame]
// { dg-additional-options "-fmodules-ts" }
export module foo;
// { dg-module-cmi foo }
typedef unsigned long size_t;
template<typename _Tp, bool _IsInt, bool _IsEnum>
class __make_unsigned_selector;
class __make_unsigned_selector_base
{
protected:
template<typename...> struct _List { };
template<typename _Tp, typename... _Up>
struct _List<_Tp, _Up...> : _List<_Up...>
{ static constexpr size_t __size = sizeof(_Tp); };
template<size_t _Sz, typename _Tp, bool = (_Sz <= _Tp::__size)>
struct __select;
};
template<typename _Tp>
class __make_unsigned_selector<_Tp, false, true>
: __make_unsigned_selector_base
{
using _UInts = _List<unsigned char, unsigned short, unsigned int,
unsigned long, unsigned long long>;
using __unsigned_type = typename __select<sizeof(_Tp), _UInts>::__type;
};