string_literal.cpp 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. // Copyright David Abrahams 2004. Distributed under the Boost
  2. // Software License, Version 1.0. (See accompanying
  3. // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  4. #include <boost/python/detail/string_literal.hpp>
  5. //#include <stdio.h>
  6. #include <boost/detail/lightweight_test.hpp>
  7. #include <boost/static_assert.hpp>
  8. using namespace boost::python::detail;
  9. template <class T>
  10. void expect_string_literal(T const&)
  11. {
  12. BOOST_STATIC_ASSERT(is_string_literal<T const>::value);
  13. }
  14. int main()
  15. {
  16. expect_string_literal("hello");
  17. BOOST_STATIC_ASSERT(!is_string_literal<int*&>::value);
  18. BOOST_STATIC_ASSERT(!is_string_literal<int* const&>::value);
  19. BOOST_STATIC_ASSERT(!is_string_literal<int*volatile&>::value);
  20. BOOST_STATIC_ASSERT(!is_string_literal<int*const volatile&>::value);
  21. BOOST_STATIC_ASSERT(!is_string_literal<char const*>::value);
  22. BOOST_STATIC_ASSERT(!is_string_literal<char*>::value);
  23. BOOST_STATIC_ASSERT(!is_string_literal<char*&>::value);
  24. BOOST_STATIC_ASSERT(!is_string_literal<char* const&>::value);
  25. BOOST_STATIC_ASSERT(!is_string_literal<char*volatile&>::value);
  26. BOOST_STATIC_ASSERT(!is_string_literal<char*const volatile&>::value);
  27. BOOST_STATIC_ASSERT(!is_string_literal<char[20]>::value);
  28. BOOST_STATIC_ASSERT(is_string_literal<char const[20]>::value);
  29. BOOST_STATIC_ASSERT(is_string_literal<char const[3]>::value);
  30. BOOST_STATIC_ASSERT(!is_string_literal<int[20]>::value);
  31. BOOST_STATIC_ASSERT(!is_string_literal<int const[20]>::value);
  32. BOOST_STATIC_ASSERT(!is_string_literal<int const[3]>::value);
  33. return boost::report_errors();
  34. }