Summary:
When attempting to output a FixedString into eg. glog or
some other ostream, it is first being implicitly converted to StringPiece
and then that is printed using the overloaded operator<<. If another
suitable implicit conversion is provided, eg. to `dynamic`, compilers
cannot choose between either one. Instead, overload operator<< directly
on FixedString to resolve the ambiguity.
Reviewed By: yfeldblum, ericniebler
Differential Revision:
D5492779
fbshipit-source-id:
92d661e5471a91057d7a0d010420709c5d59232f
}
};
+template <class C, std::size_t N>
+inline std::basic_ostream<C>& operator<<(
+ std::basic_ostream<C>& os,
+ const BasicFixedString<C, N>& string) {
+ using StreamSize = decltype(os.width());
+ os.write(string.begin(), static_cast<StreamSize>(string.size()));
+ return os;
+}
+
/** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **
* Symmetric relational operators
*/