GNUのstd::string
実装では、_S_empty_rep_storage
は次のように定義されています。なぜstd :: stringは空のrepであるのですか?
template<typename _CharT, typename _Traits, typename _Alloc>
typename basic_string<_CharT, _Traits, _Alloc>::size_type
basic_string<_CharT, _Traits, _Alloc>::_Rep::_S_empty_rep_storage[
(sizeof(_Rep_base) + sizeof(_CharT) + sizeof(size_type) - 1)/sizeof(size_type)
];
char
ではなくsize_type
という用語で定義されるのはなぜですか?
template<typename _CharT, typename _Traits, typename _Alloc>
_CharT
basic_string<_CharT, _Traits, _Alloc>::_Rep::_S_empty_rep_storage[
sizeof(_Rep_base) + sizeof(_CharT)
];
のように定義されていないのはなぜですか?
参考:私が自分の文字列クラス (これはstd::string
が満たしていないさまざまな要件を持つ)を実装しているので、私が求めているのは なので、できるだけ多くのことを理解したいのですがstd::string
が実装されています。
結果が同じではないためですか? –
"単純に" char "ではなく単に" CharT "ではなく" say "を意味するのですか? –
"自分の文字列クラスを実装する"には疑問符が全部書かれています。あなたはそれをする必要があると絶対に確信していますか? – CJBrew