]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/python/include/boost/python/detail/string_literal.hpp
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / python / include / boost / python / detail / string_literal.hpp
CommitLineData
7c673cae
FG
1// Copyright David Abrahams 2002.
2// Distributed under the Boost Software License, Version 1.0. (See
3// accompanying file LICENSE_1_0.txt or copy at
4// http://www.boost.org/LICENSE_1_0.txt)
5#ifndef STRING_LITERAL_DWA2002629_HPP
6# define STRING_LITERAL_DWA2002629_HPP
7
8# include <cstddef>
9# include <boost/type.hpp>
10# include <boost/type_traits/array_traits.hpp>
11# include <boost/type_traits/same_traits.hpp>
12# include <boost/mpl/bool.hpp>
13# include <boost/detail/workaround.hpp>
14
15namespace boost { namespace python { namespace detail {
16
17template <class T>
18struct is_string_literal : mpl::false_
19{
20};
21
22# if !defined(__MWERKS__) || __MWERKS__ > 0x2407
23template <std::size_t n>
24struct is_string_literal<char const[n]> : mpl::true_
25{
26};
27
28# if BOOST_WORKAROUND(__DECCXX_VER, BOOST_TESTED_AT(60590040)) \
29 || (defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730)
30// This compiler mistakenly gets the type of string literals as char*
31// instead of char[NN].
32template <>
33struct is_string_literal<char* const> : mpl::true_
34{
35};
36# endif
37
38# else
39
40// CWPro7 has trouble with the array type deduction above
41template <class T, std::size_t n>
42struct is_string_literal<T[n]>
43 : is_same<T, char const>
44{
45};
46# endif
47
48}}} // namespace boost::python::detail
49
50#endif // STRING_LITERAL_DWA2002629_HPP