eif_member_templates.cpp 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. // Boost enable_if library
  2. // Copyright 2003 (c) The Trustees of Indiana University.
  3. // Use, modification, and distribution is subject to the Boost Software
  4. // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
  5. // http://www.boost.org/LICENSE_1_0.txt)
  6. // Authors: Jaakko Jarvi (jajarvi at osl.iu.edu)
  7. // Jeremiah Willcock (jewillco at osl.iu.edu)
  8. // Andrew Lumsdaine (lums at osl.iu.edu)
  9. #include <boost/utility/enable_if.hpp>
  10. #include <boost/type_traits/is_arithmetic.hpp>
  11. #include <boost/detail/lightweight_test.hpp>
  12. using boost::enable_if;
  13. using boost::disable_if;
  14. using boost::is_arithmetic;
  15. struct container {
  16. template <class T>
  17. typename enable_if<is_arithmetic<T>, bool>::type
  18. arithmetic_object(const T&, const int* /* disambiguate */ = 0) {return true;}
  19. template <class T>
  20. typename disable_if<is_arithmetic<T>, bool>::type
  21. arithmetic_object(const T&) {return false;}
  22. };
  23. int main()
  24. {
  25. BOOST_TEST(container().arithmetic_object(1));
  26. BOOST_TEST(container().arithmetic_object(1.0));
  27. BOOST_TEST(!container().arithmetic_object("1"));
  28. BOOST_TEST(!container().arithmetic_object(static_cast<void*>(0)));
  29. return boost::report_errors();
  30. }