<commit_before>inplace_string<T, CharT, Traits>
================================
A std::string's alternative with inplace storage, C++17 compliant.


Example
-------
```
{
  using Name = inplace_string<15>; // 16 bytes on stack, size included
  Name name = "foo"; 

  auto it = name.find("r");
  assert(it == Name::npos);

  name += "bar";
  
  std::string str(name); // implicit string_view construction

  ....
}

{
  inplace_string<5> too_small;
  too_small = "foobar"; // compiler error
}
```

<commit_msg>README: adding compatibility section<commit_after>inplace_string<T, CharT, Traits>
================================
An alternative to std::string with inplace storage. STL compliant, can be used as a full replacement of C++17's std::string.


Example
-------
```
{
  using Name = inplace_string<15>; // 16 bytes on stack, size included
  Name name = "foo"; 

  auto it = name.find("r");
  assert(it == Name::npos);

  name += "bar";
  
  std::string str(name); // implicit string_view construction

  ....
}

{
  inplace_string<5> too_small;
  too_small = "foobar"; // compiler error
}
```



Compatibility
-------------
inplace_string<T, CharT, Traits> implements C++17's std::string interface, plus:
  * `max_size()` and `capacity()` are `constexpr`
  * `inplace_string` can be constructed from `const CharT(&)[M])`, allowing a compile-time error it the input exceeds the maximum capacity

It is compatible with GCC >= 5.
{'fraction_non_alphanumeric': 0.19609211444521982, 'fraction_numerical': 0.011863224005582694, 'mean_word_length': 3.8610169491525426, 'pattern_counts': {'":': 0, '<': 10, '<?xml version=': 0, '>': 11, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3643284', 'n_tokens_mistral': 478, 'n_tokens_neox': 438, 'n_words': 136}