35 #ifndef BLOCXX_CSTR_HPP_INCLUDE_GUARD_
36 #define BLOCXX_CSTR_HPP_INCLUDE_GUARD_
42 #include "blocxx/BLOCXX_config.h"
56 enum {
value =
false };
60 struct is_char_ptr<char *>
62 enum { value =
true };
66 struct is_char_ptr<char const *>
68 enum { value =
true };
71 template <std::
size_t N>
72 struct is_char_ptr<char[N]>
74 enum {
value =
true };
77 template <std::
size_t N>
78 struct is_char_ptr<char const [N]>
80 enum {
value =
true };
83 template <
typename S,
bool is_
char_po
inter>
86 static char const *
c_str(S
const & s)
93 struct CstrStringAux<S, true>
95 static char const *
c_str(S
const & s)
101 template <
typename S>
102 struct CstrString :
public CstrStringAux<S, is_char_ptr<S>::value>
110 template <
typename S>
129 template <
typename SA>
133 char const *
const *
sarr;
151 template <
typename S>
154 char const *
const * sarr;
162 template <
typename S>
163 struct CstrArr<S const *> :
private ctassert<is_char_ptr<S>::value>
165 char const *
const * sarr;
173 template <std::
size_t N,
typename S>
176 char const *
const *
sarr;
184 template <std::
size_t N,
typename S>
185 struct CstrArr<S const [N]> :
private ctassert<is_char_ptr<S>::value>
187 char const *
const *
sarr;
195 template <
typename S>
199 char const *
const *
sarr;
204 for (it = s.
begin(); it != itend; ++it)