• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
7 #include <boost/detail/lightweight_test.hpp>
8 #include <boost/static_assert.hpp>
9 
10 using namespace boost::python::detail;
11 
12 
13 template <class T>
expect_string_literal(T const &)14 void expect_string_literal(T const&)
15 {
16     BOOST_STATIC_ASSERT(is_string_literal<T const>::value);
17 }
18 
main()19 int main()
20 {
21     expect_string_literal("hello");
22     BOOST_STATIC_ASSERT(!is_string_literal<int*&>::value);
23     BOOST_STATIC_ASSERT(!is_string_literal<int* const&>::value);
24     BOOST_STATIC_ASSERT(!is_string_literal<int*volatile&>::value);
25     BOOST_STATIC_ASSERT(!is_string_literal<int*const volatile&>::value);
26 
27     BOOST_STATIC_ASSERT(!is_string_literal<char const*>::value);
28     BOOST_STATIC_ASSERT(!is_string_literal<char*>::value);
29     BOOST_STATIC_ASSERT(!is_string_literal<char*&>::value);
30     BOOST_STATIC_ASSERT(!is_string_literal<char* const&>::value);
31     BOOST_STATIC_ASSERT(!is_string_literal<char*volatile&>::value);
32     BOOST_STATIC_ASSERT(!is_string_literal<char*const volatile&>::value);
33 
34     BOOST_STATIC_ASSERT(!is_string_literal<char[20]>::value);
35     BOOST_STATIC_ASSERT(is_string_literal<char const[20]>::value);
36     BOOST_STATIC_ASSERT(is_string_literal<char const[3]>::value);
37 
38     BOOST_STATIC_ASSERT(!is_string_literal<int[20]>::value);
39     BOOST_STATIC_ASSERT(!is_string_literal<int const[20]>::value);
40     BOOST_STATIC_ASSERT(!is_string_literal<int const[3]>::value);
41     return boost::report_errors();
42 }
43