23 #define FS(x) ::folly::makeFixedString(x) 26 TEST(FixedStringExamples, Examples) {
28 using namespace folly;
31 constexpr
auto hello_world = hello +
' ' + world +
'!';
32 static_assert(hello_world ==
"hello world!",
"w00t");
36 test.replace(1, 2,
"!!!!");
38 static_assert(
makeFixedString(
"****").creplace(1, 2,
"!!!!") ==
"*!!!!*",
"");
41 TEST(FixedStringCtorTest, Default) {
43 static_assert(
s[0] ==
'\0',
"");
44 static_assert(
s.size() == 0u,
"");
46 constexpr
auto s2 =
s;
47 static_assert(s2[0] ==
'\0',
"");
48 static_assert(s2.size() == 0u,
"");
51 TEST(FixedStringCtorTest, FromLiterals) {
53 static_assert(
s[0] ==
'h',
"");
55 static_assert(s2[0] ==
'h',
"");
56 static_assert(s2[10] ==
'd',
"");
57 static_assert(s2[11] ==
'\0',
"");
64 TEST(FixedStringCtorTest, FromPtrAndLength) {
66 static_assert(
s[0] ==
'h',
"");
67 static_assert(
s[10] ==
'd',
"");
68 static_assert(
s[11] ==
'\0',
"");
69 static_assert(
s.size() == 11u,
"");
72 static_assert(s2[0] ==
'h',
"");
73 static_assert(s2[4] ==
'o',
"");
74 static_assert(s2[5] ==
'\0',
"");
75 static_assert(s2.size() == 5u,
"");
78 static_assert(s2[0] ==
'h',
"");
79 static_assert(s2[4] ==
'o',
"");
80 static_assert(s2[5] ==
'\0',
"");
81 static_assert(s2.size() == 5u,
"");
83 static_assert(
"hello" == s3,
"");
84 static_assert(s3 ==
"hello",
"");
85 static_assert(s3 == s2,
"");
86 static_assert(
"hell" != s3,
"");
87 static_assert(s3 !=
"helloooo",
"");
88 static_assert(!(s3 != s2),
"");
91 TEST(FixedStringCtorTest, FromStringAndOffset) {
94 static_assert(s2 ==
"world",
"");
96 static_assert(s3 ==
"",
"");
101 TEST(FixedStringCtorTest, FromStringOffsetAndCount) {
104 static_assert(s2 ==
"worl",
"");
106 static_assert(s3 ==
"world",
"");
111 TEST(FixedStringCtorTest, FromInitializerList) {
113 'h',
'e',
'l',
'l',
'o',
' ',
'w',
'o',
'r',
'l',
'd'};
114 static_assert(
s ==
"hello world",
"");
120 TEST(FixedStringCtorTest, FromUDL) {
122 #if defined(__GNUC__) 123 constexpr
auto x =
"hello"_fs;
126 static_assert(x[0] ==
'h',
"");
127 static_assert(x[1] ==
'e',
"");
128 static_assert(x[2] ==
'l',
"");
129 static_assert(x[3] ==
'l',
"");
130 static_assert(x[4] ==
'o',
"");
131 static_assert(x[5] ==
'\0',
"");
132 static_assert(x.size() == 5u,
"");
135 constexpr
auto y =
"goodbye"_fs8;
138 static_assert(y.size() == 7u,
"");
139 static_assert(y ==
"goodbye",
"");
141 constexpr
auto z =
"now is the time for all good llamas"_fs64;
144 static_assert(z.size() == 35u,
"");
145 static_assert(z ==
"now is the time for all good llamas",
"");
148 TEST(FixedStringConcatTest, FromStringAndLiteral) {
150 constexpr
auto res =
s +
"!!!";
151 static_assert(res.size() == 14u,
"");
152 static_assert(res ==
"hello world!!!",
"");
155 TEST(FixedStringConcatTest, FromTwoStrings) {
157 constexpr
auto res =
s +
"!!!";
158 static_assert(res.size() == 14u,
"");
159 static_assert(res ==
"hello world!!!",
"");
162 #if FOLLY_USE_CPP14_CONSTEXPR 169 TEST(FixedStringSwapTest, ConstexprSwap) {
170 static_assert(constexpr_swap_test() ==
"world!hello",
"");
174 TEST(FixedStringSwapTest, RuntimeSwap) {
180 #if FOLLY_USE_CPP14_CONSTEXPR 193 tmp.
assign(
"goodbye"_fs8, 3u, 2u);
198 tmp.
assign(
"goodbye"_fs8, 3u, npos);
202 TEST(FixedStringAssignTest, ConstexprAssignString) {
203 static_assert(constexpr_assign_string_test_1() ==
"world!",
"");
204 static_assert(constexpr_assign_string_test_2() ==
"hello",
"");
205 static_assert(constexpr_assign_string_test_3() ==
"db",
"");
206 static_assert(constexpr_assign_string_test_4() ==
"dbye",
"");
210 TEST(FixedStringAssignTest, RuntimeAssignString) {
214 tmp1.
assign(
"goodbye"_fs8);
216 tmp1.
assign(
"goodbye"_fs8, 3u, npos);
218 tmp1.
assign(
"goodbye"_fs8, 3u, 3u);
222 #if FOLLY_USE_CPP14_CONSTEXPR 238 tmp.
assign(
"goodbye", 4u);
242 TEST(FixedStringAssignTest, ConstexprAssignLiteral) {
243 static_assert(constexpr_assign_literal_test_1() ==
"hello",
"");
244 static_assert(constexpr_assign_literal_test_2() ==
"hello",
"");
245 static_assert(constexpr_assign_literal_test_3() ==
"good",
"");
249 TEST(FixedStringAssignTest, RuntimeAssignLiteral) {
253 tmp.assign(
"goodbye");
255 tmp.assign(
"goodbye", 4u);
259 TEST(FixedStringIndexTest, Index) {
261 static_assert(digits[0] ==
'0',
"");
262 static_assert(digits[1] ==
'1',
"");
263 static_assert(digits[2] ==
'2',
"");
264 static_assert(digits[9] ==
'9',
"");
265 static_assert(digits[10] ==
'\0',
"");
269 static_assert(digits[11] ==
'\0',
"");
272 static_assert(digits.at(0) ==
'0',
"");
273 static_assert(digits.at(1) ==
'1',
"");
274 static_assert(digits.at(2) ==
'2',
"");
275 static_assert(digits.at(9) ==
'9',
"");
276 static_assert(digits.at(10) ==
'\0',
"");
280 TEST(FixedStringCompareTest, Compare) {
283 static_assert(-1 == tmp1.compare(tmp2),
"");
284 static_assert(1 == tmp2.compare(tmp1),
"");
285 static_assert(0 == tmp2.compare(tmp2),
"");
286 static_assert(tmp1 < tmp2,
"");
287 static_assert(tmp1 <= tmp2,
"");
288 static_assert(tmp2 > tmp1,
"");
289 static_assert(tmp2 >= tmp1,
"");
290 static_assert(tmp2 == tmp2,
"");
291 static_assert(tmp2 <= tmp2,
"");
292 static_assert(tmp2 >= tmp2,
"");
293 static_assert(!(tmp2 < tmp2),
"");
294 static_assert(!(tmp2 > tmp2),
"");
298 static_assert(-1 == tmp3.compare(tmp4),
"");
299 static_assert(1 == tmp4.compare(tmp3),
"");
300 static_assert(tmp3 < tmp4,
"");
301 static_assert(tmp3 <= tmp4,
"");
302 static_assert(tmp4 > tmp3,
"");
303 static_assert(tmp4 >= tmp3,
"");
304 static_assert(tmp3 <
"aaaa",
"");
305 static_assert(tmp3 <=
"aaaa",
"");
306 static_assert(!(tmp3 == tmp4),
"");
307 static_assert(tmp3 != tmp4,
"");
308 static_assert(
"aaaa" > tmp3,
"");
309 static_assert(
"aaaa" >= tmp3,
"");
310 static_assert(
"aaaa" != tmp3,
"");
311 static_assert(
"aaa" == tmp3,
"");
312 static_assert(tmp3 !=
"aaaa",
"");
313 static_assert(tmp3 ==
"aaa",
"");
316 TEST(FixedStringCompareTest, CompareStdString) {
336 #if FOLLY_USE_CPP14_CONSTEXPR 345 TEST(FixedStringAssignTest, ConstexprAppendString) {
346 static_assert(constexpr_append_string_test() ==
"hello world!",
"");
350 TEST(FixedStringAssignTest, RuntimeAppendString) {
358 #if FOLLY_USE_CPP14_CONSTEXPR 362 a.append(
"X world!" + 2u, 5u);
363 a.append(
"X world!" + 7u);
367 TEST(FixedStringAssignTest, ConstexprAppendLiteral) {
368 static_assert(constexpr_append_literal_test() ==
"hello world!",
"");
372 TEST(FixedStringAssignTest, RuntimeAppendLiteral) {
375 a.append(
"X world!" + 2u, 5u);
376 a.append(
"X world!" + 7u);
380 TEST(FixedStringCAppendTest, CAppendString) {
382 constexpr
auto tmp1 =
a.cappend(
' ');
383 constexpr
auto tmp2 = tmp1.cappend(
b, 2u, 5u);
384 constexpr
auto tmp3 = tmp2.cappend(
b, 7u, 1u);
385 static_assert(tmp3 ==
"hello world!",
"");
388 TEST(FixedStringCAppendTest, CAppendLiteral) {
390 constexpr
auto tmp1 =
a.cappend(
' ');
391 constexpr
auto tmp2 = tmp1.cappend(
"X world!", 2u, 5u);
392 constexpr
auto tmp3 = tmp2.cappend(
"X world!", 7u, 1u);
393 static_assert(tmp3 ==
"hello world!",
"");
396 #if FOLLY_USE_CPP14_CONSTEXPR 403 TEST(FixedStringReplaceTest, ConstexprReplaceString) {
404 static_assert(constexpr_replace_string_test().
size() == 7u,
"");
405 static_assert(constexpr_replace_string_test() ==
"aXXghij",
"");
409 TEST(FixedStringReplaceTest, RuntimeReplaceString) {
416 TEST(FixedStringEraseTest, RuntimeEraseTest) {
417 auto x =
FS(
"abcdefghijklmnopqrstuvwxyz"),
y =
x;
421 x.erase(25u).erase(24u);
424 x.erase(1u,
x.size() - 2u);
429 TEST(FixedStringEraseTest, CEraseTest) {
430 constexpr
auto x =
FS(
"abcdefghijklmnopqrstuvwxyz"),
y =
x;
431 constexpr
auto tmp0 = x.cerase(x.size());
432 static_assert(26u == tmp0.size(),
"");
433 static_assert(
y == tmp0,
"");
434 constexpr
auto tmp1 = tmp0.cerase(25u).cerase(24u);
435 static_assert(24u == tmp1.size(),
"");
436 static_assert(
"abcdefghijklmnopqrstuvwx" == tmp1,
"");
437 constexpr
auto tmp2 = tmp1.cerase(1u, tmp1.size() - 2u);
438 static_assert(2u == tmp2.size(),
"");
439 static_assert(
"ax" == tmp2,
"");
440 constexpr
auto tmp3 = tmp2.cerase();
441 static_assert(
"" == tmp3,
"");
444 TEST(FixedStringFindTest, FindString) {
446 static_assert(tmp.find(
FS(
"hij")) == 0u,
"");
447 static_assert(tmp.find(
FS(
"hij"), 1u) == 7u,
"");
448 static_assert(tmp.find(
FS(
"hijdefghij")) == 0u,
"");
449 static_assert(tmp.find(
FS(
"")) == 0u,
"");
452 TEST(FixedStringFindTest, FindLiteral) {
454 static_assert(tmp.find(
"hij") == 0u,
"");
455 static_assert(tmp.find(
"hij", 1u) == 7u,
"");
456 static_assert(tmp.find(
"hijdefghij") == 0u,
"");
459 TEST(FixedStringReverseFindTest, FindChar) {
461 static_assert(tmp.find(
's') == 3u,
"");
462 static_assert(tmp.find(
's', 9u) == 10u,
"");
463 static_assert(tmp.find(
's', 10u) == 10u,
"");
464 static_assert(tmp.find(
's', 11u) == tmp.npos,
"");
467 TEST(FixedStringReverseFindTest, ReverseFindString) {
469 static_assert(tmp.rfind(
FS(
"is")) == 5u,
"");
470 static_assert(tmp.rfind(
FS(
"is"), 4u) == 2u,
"");
471 static_assert(tmp.rfind(
FS(
"This is a string")) == 0u,
"");
472 static_assert(tmp.rfind(
FS(
"This is a string!")) == tmp.npos,
"");
473 static_assert(tmp.rfind(
FS(
"")) == 16u,
"");
476 TEST(FixedStringReverseFindTest, ReverseFindLiteral) {
478 static_assert(tmp.rfind(
"is") == 5u,
"");
479 static_assert(tmp.rfind(
"is", 4u) == 2u,
"");
480 static_assert(tmp.rfind(
"This is a string") == 0u,
"");
481 static_assert(tmp.rfind(
"This is a string!") == tmp.npos,
"");
482 static_assert(tmp.rfind(
"") == 16u,
"");
485 TEST(FixedStringReverseFindTest, ReverseFindChar) {
487 static_assert(tmp.rfind(
's') == 10u,
"");
488 static_assert(tmp.rfind(
's', 5u) == 3u,
"");
489 static_assert(tmp.rfind(
's', 3u) == 3u,
"");
490 static_assert(tmp.rfind(
's', 2u) == tmp.npos,
"");
493 TEST(FixedStringFindFirstOfTest, FindFirstOfString) {
495 static_assert(tmp.find_first_of(
FS(
"hi")) == 1u,
"");
496 static_assert(tmp.find_first_of(
FS(
"xi")) == 2u,
"");
497 static_assert(tmp.find_first_of(
FS(
"xi"), 6u) == 13u,
"");
498 static_assert(tmp.find_first_of(
FS(
"xz")) == tmp.npos,
"");
499 static_assert(
FS(
"a").find_first_of(
FS(
"cba")) == 0u,
"");
500 static_assert(
FS(
"").find_first_of(
FS(
"cba")) == tmp.npos,
"");
501 static_assert(
FS(
"a").find_first_of(
FS(
"")) == tmp.npos,
"");
502 static_assert(
FS(
"").find_first_of(
FS(
"")) == tmp.npos,
"");
505 TEST(FixedStringFindFirstOfTest, FindFirstOfLiteral) {
507 static_assert(tmp.find_first_of(
"hi") == 1u,
"");
508 static_assert(tmp.find_first_of(
"xi") == 2u,
"");
509 static_assert(tmp.find_first_of(
"xi", 6u) == 13u,
"");
510 static_assert(tmp.find_first_of(
"xis", 6u, 2u) == 13u,
"");
511 static_assert(tmp.find_first_of(
"xz") == tmp.npos,
"");
512 static_assert(
FS(
"a").find_first_of(
"cba") == 0u,
"");
513 static_assert(
FS(
"").find_first_of(
"cba") == tmp.npos,
"");
514 static_assert(
FS(
"a").find_first_of(
"") == tmp.npos,
"");
515 static_assert(
FS(
"").find_first_of(
"") == tmp.npos,
"");
518 TEST(FixedStringFindFirstOfTest, FindFirstOfChar) {
520 static_assert(tmp.find_first_of(
'h') == 1u,
"");
521 static_assert(tmp.find_first_of(
'i') == 2u,
"");
522 static_assert(tmp.find_first_of(
'i', 6u) == 13u,
"");
523 static_assert(tmp.find_first_of(
'x') == tmp.npos,
"");
524 static_assert(
FS(
"a").find_first_of(
'a') == 0u,
"");
525 static_assert(
FS(
"").find_first_of(
'a') == tmp.npos,
"");
528 TEST(FixedStringFindFirstNotOfTest, FindFirstNotOfString) {
530 static_assert(tmp.find_first_not_of(
FS(
"Ti")) == 1u,
"");
531 static_assert(tmp.find_first_not_of(
FS(
"hT")) == 2u,
"");
532 static_assert(tmp.find_first_not_of(
FS(
"s atr"), 6u) == 13u,
"");
533 static_assert(tmp.find_first_not_of(
FS(
"This atrng")) == tmp.npos,
"");
534 static_assert(
FS(
"a").find_first_not_of(
FS(
"X")) == 0u,
"");
535 static_assert(
FS(
"").find_first_not_of(
FS(
"cba")) == tmp.npos,
"");
536 static_assert(
FS(
"a").find_first_not_of(
FS(
"")) == 0u,
"");
537 static_assert(
FS(
"").find_first_not_of(
FS(
"")) == tmp.npos,
"");
540 TEST(FixedStringFindFirstNotOfTest, FindFirstNotOfLiteral) {
542 static_assert(tmp.find_first_not_of(
"Ti") == 1u,
"");
543 static_assert(tmp.find_first_not_of(
"hT") == 2u,
"");
544 static_assert(tmp.find_first_not_of(
"s atr", 6u) == 13u,
"");
545 static_assert(tmp.find_first_not_of(
"This atrng") == tmp.npos,
"");
546 static_assert(
FS(
"a").find_first_not_of(
"X") == 0u,
"");
547 static_assert(
FS(
"").find_first_not_of(
"cba") == tmp.npos,
"");
548 static_assert(
FS(
"a").find_first_not_of(
"") == 0u,
"");
549 static_assert(
FS(
"").find_first_not_of(
"") == tmp.npos,
"");
552 TEST(FixedStringFindFirstNotOfTest, FindFirstNotOfChar) {
554 static_assert(tmp.find_first_not_of(
'T') == 1u,
"");
555 static_assert(tmp.find_first_not_of(
'i') == 0u,
"");
556 static_assert(tmp.find_first_not_of(
'x', 6u) == 6u,
"");
557 static_assert(tmp.find_first_not_of(
's', 6u) == 7u,
"");
558 static_assert(
FS(
"a").find_first_not_of(
'a') == tmp.npos,
"");
559 static_assert(
FS(
"").find_first_not_of(
'a') == tmp.npos,
"");
562 TEST(FixedStringFindLastOfTest, FindLastOfString) {
564 static_assert(tmp.find_last_of(
FS(
"hi")) == 13u,
"");
565 static_assert(tmp.find_last_of(
FS(
"xh")) == 1u,
"");
566 static_assert(tmp.find_last_of(
FS(
"xi"), 6u) == 5u,
"");
567 static_assert(tmp.find_last_of(
FS(
"xz")) == tmp.npos,
"");
568 static_assert(
FS(
"a").find_last_of(
FS(
"cba")) == 0u,
"");
569 static_assert(
FS(
"").find_last_of(
FS(
"cba")) == tmp.npos,
"");
570 static_assert(
FS(
"a").find_last_of(
FS(
"")) == tmp.npos,
"");
571 static_assert(
FS(
"").find_last_of(
FS(
"")) == tmp.npos,
"");
574 TEST(FixedStringFindLastOfTest, FindLastOfLiteral) {
576 static_assert(tmp.find_last_of(
"hi") == 13u,
"");
577 static_assert(tmp.find_last_of(
"xh") == 1u,
"");
578 static_assert(tmp.find_last_of(
"xi", 6u) == 5u,
"");
579 static_assert(tmp.find_last_of(
"xis", 6u, 2u) == 5u,
"");
580 static_assert(tmp.find_last_of(
"xz") == tmp.npos,
"");
581 static_assert(
FS(
"a").find_last_of(
"cba") == 0u,
"");
582 static_assert(
FS(
"").find_last_of(
"cba") == tmp.npos,
"");
583 static_assert(
FS(
"a").find_last_of(
"") == tmp.npos,
"");
584 static_assert(
FS(
"").find_last_of(
"") == tmp.npos,
"");
587 TEST(FixedStringFindLastOfTest, FindLastOfChar) {
589 static_assert(tmp.find_last_of(
'h') == 1u,
"");
590 static_assert(tmp.find_last_of(
'i') == 13u,
"");
591 static_assert(tmp.find_last_of(
'i', 6u) == 5u,
"");
592 static_assert(tmp.find_last_of(
'x') == tmp.npos,
"");
593 static_assert(
FS(
"a").find_last_of(
'a') == 0u,
"");
594 static_assert(
FS(
"").find_last_of(
'a') == tmp.npos,
"");
597 TEST(FixedStringFindLastNotOfTest, FindLastNotOfString) {
599 static_assert(tmp.find_last_not_of(
FS(
"gstrin")) == 9u,
"");
600 static_assert(tmp.find_last_not_of(
FS(
"hT")) == 15u,
"");
601 static_assert(tmp.find_last_not_of(
FS(
"s atr"), 6u) == 5u,
"");
602 static_assert(tmp.find_last_not_of(
FS(
"This atrng")) == tmp.npos,
"");
603 static_assert(
FS(
"a").find_last_not_of(
FS(
"X")) == 0u,
"");
604 static_assert(
FS(
"").find_last_not_of(
FS(
"cba")) == tmp.npos,
"");
605 static_assert(
FS(
"a").find_last_not_of(
FS(
"")) == 0u,
"");
606 static_assert(
FS(
"").find_last_not_of(
FS(
"")) == tmp.npos,
"");
609 TEST(FixedStringFindLastNotOfTest, FindLastNotOfLiteral) {
611 static_assert(tmp.find_last_not_of(
"gstrin") == 9u,
"");
612 static_assert(tmp.find_last_not_of(
"hT") == 15u,
"");
613 static_assert(tmp.find_last_not_of(
"s atr", 6u) == 5u,
"");
614 static_assert(tmp.find_last_not_of(
" atrs", 6u, 4u) == 6u,
"");
615 static_assert(tmp.find_last_not_of(
"This atrng") == tmp.npos,
"");
616 static_assert(
FS(
"a").find_last_not_of(
"X") == 0u,
"");
617 static_assert(
FS(
"").find_last_not_of(
"cba") == tmp.npos,
"");
618 static_assert(
FS(
"a").find_last_not_of(
"") == 0u,
"");
619 static_assert(
FS(
"").find_last_not_of(
"") == tmp.npos,
"");
622 TEST(FixedStringFindLastNotOfTest, FindLastNotOfChar) {
624 static_assert(tmp.find_last_not_of(
'g') == 14u,
"");
625 static_assert(tmp.find_last_not_of(
'i') == 15u,
"");
626 static_assert(tmp.find_last_not_of(
'x', 6u) == 6u,
"");
627 static_assert(tmp.find_last_not_of(
's', 6u) == 5u,
"");
628 static_assert(
FS(
"a").find_last_not_of(
'a') == tmp.npos,
"");
629 static_assert(
FS(
"").find_last_not_of(
'a') == tmp.npos,
"");
632 TEST(FixedStringConversionTest, ConversionToStdString) {
636 str =
"another string"_fs16;
640 #if FOLLY_USE_CPP14_CONSTEXPR 642 std::size_t
count = 0u;
644 for (;
i != s.
rend(); ++
i, --
i, i++, i--, i += 1, i -= 1, i += 1) {
652 TEST(FixedStringReverseIteratorTest, Cpp14ConstexprReverseIteration) {
653 static_assert(3 == countSpacesReverse(
"This is a string"),
"");
657 TEST(FixedStringReverseIteratorTest, ConstexprReverseIteration) {
658 static constexpr
auto alpha =
FS(
"abcdefghijklmnopqrstuvwxyz");
659 static_assert(
'a' == alpha.rbegin()[25],
"");
660 static_assert(
'a' == *(alpha.rbegin() + 25),
"");
661 static_assert(
'c' == *(alpha.rbegin() + 25 - 2),
"");
662 static_assert((alpha.rend() - 2) == (alpha.rbegin() + 24),
"");
673 template <
typename T1>
675 return xyz + dot + component;
691 TEST(FixedStringConversionTest, ConversionToFollyRange) {
697 static_assert(tmp.begin() == piece.begin(),
"");
698 static_assert(tmp.end() == piece.end(),
"");
#define EXPECT_THROW(statement, expected_exception)
#define EXPECT_EQ(val1, val2)
—— Concurrent Priority Queue Implementation ——
requires E e noexcept(noexcept(s.error(std::move(e))))
FOLLY_CPP14_CONSTEXPR BasicFixedString & assign(std::size_t count, Char ch) noexcept(false)
constexpr auto concatStuff(const T1 &component) noexcept
FOLLY_CPP14_CONSTEXPR void swap(BasicFixedString &that) noexcept
#define EXPECT_STREQ(s1, s2)
constexpr auto size(C const &c) -> decltype(c.size())
constexpr const Char * c_str() const noexcept
A class for holding up to N characters of type Char that is amenable to constexpr string manipulation...
#define EXPECT_TRUE(condition)
FOLLY_CPP14_CONSTEXPR reverse_iterator rend() noexcept
uint64_t value(const typename LockFreeRingBuffer< T, Atom >::Cursor &rbcursor)
#define EXPECT_FALSE(condition)
FOLLY_CPP14_CONSTEXPR BasicFixedString & replace(const Char *first, const Char *last, const BasicFixedString< Char, M > &that) noexcept(false)
TEST(SequencedExecutor, CPUThreadPoolExecutor)
FOLLY_CPP14_CONSTEXPR reverse_iterator rbegin() noexcept
constexpr BasicFixedString< Char, N-1u > makeFixedString(const Char(&a)[N]) noexcept