This documentation is automatically generated by competitive-verifier/competitive-verifier
#include "tools/make_unsigned.hpp"
template <typename T>
struct make_unsigned {
using type = ...;
};
template <typename T>
using make_unsigned_t = typename make_unsigned<T>::type;
tools::make_unsigned
is guaranteed to satisfy the following properties.
std::make_unsigned_t<T>
is defined, tools::make_unsigned_t<T>
is std::make_unsigned_t<T>
.tools::make_unsigned_t<tools::int128_t>
is tools::uint128_t
.tools::make_unsigned_t<tools::uint128_t>
is tools::uint128_t
.tools::make_unsigned_t<const tools::int128_t>
is const tools::uint128_t
.tools::make_unsigned_t<const tools::uint128_t>
is const tools::uint128_t
.tools::make_unsigned_t<volatile tools::int128_t>
is volatile tools::uint128_t
.tools::make_unsigned_t<volatile tools::uint128_t>
is volatile tools::uint128_t
.tools::make_unsigned_t<const volatile tools::int128_t>
is const volatile tools::uint128_t
.tools::make_unsigned_t<const volatile tools::uint128_t>
is const volatile tools::uint128_t
.When using libstdc++ with -std=c++...
option, std::make_unsigned_t<tools::int128_t>
cannot be compiled, but with tools::make_unsigned
, it can be compiled.
#ifndef TOOLS_MAKE_UNSIGNED_HPP
#define TOOLS_MAKE_UNSIGNED_HPP
#include <type_traits>
namespace tools {
template <typename T>
struct make_unsigned : ::std::make_unsigned<T> {};
template <typename T>
using make_unsigned_t = typename ::tools::make_unsigned<T>::type;
}
#endif
#line 1 "tools/make_unsigned.hpp"
#include <type_traits>
namespace tools {
template <typename T>
struct make_unsigned : ::std::make_unsigned<T> {};
template <typename T>
using make_unsigned_t = typename ::tools::make_unsigned<T>::type;
}