make_signed.qbk 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. [/
  2. Copyright 2007 John Maddock.
  3. Distributed under the Boost Software License, Version 1.0.
  4. (See accompanying file LICENSE_1_0.txt or copy at
  5. http://www.boost.org/LICENSE_1_0.txt).
  6. ]
  7. [section:make_signed make_signed]
  8. template <class T>
  9. struct make_signed
  10. {
  11. typedef __below type;
  12. };
  13. template <class T> using make_signed_t = typename make_signed<T>::type; // C++11 and above
  14. __type If T is a signed integer type then the same type as T, if T is an
  15. unsigned integer type then the corresponding signed type.
  16. Otherwise if T is an enumerated or
  17. character type (char or wchar_t) then a signed integer type with the same
  18. width as T.
  19. If T has any cv-qualifiers then these are also present on the result type.
  20. [*Requires:] T must be an integer or enumerated type, and must not be the type
  21. bool.
  22. __std_ref 3.9.1.
  23. [all_compilers]
  24. __header ` #include <boost/type_traits/make_signed.hpp>` or ` #include <boost/type_traits.hpp>`
  25. [table Examples
  26. [ [Expression] [Result Type]]
  27. [[`make_signed<int>::type`][`int`]]
  28. [[`make_signed<unsigned int const>::type`] [`int const`]]
  29. [[`make_signed<const unsigned long long>::type`] [`const long long`]]
  30. [[`make_signed<my_enum>::type`] [A signed integer type with the same width as the enum.]]
  31. [[`make_signed<wchar_t>::type`] [A signed integer type with the same width as wchar_t.]]
  32. ]
  33. [endsect]