+ } else {
+ // Happens only for really big Char types
+ data_ = 0;
+ }
+}
+
+
+template<typename Char>
+trivial_string<Char>::trivial_string(Char const * that, size_t n) : size_(n)
+{
+ if (use_sso()) {
+ copy(that, that + size_, data_sso());
+ data_sso()[size_] = '\0';
+ } else if (size_ > 0) {
+ data_ = new Char[size_ + 1];
+ copy(that, that + size_, data_);
+ data_[size_] = '\0';
+ } else {
+ // Happens only for really big Char types
+ data_ = 0;