//===----------------------------------------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // #include #include #include "test_macros.h" struct Incomplete; template struct Holder { T t; }; template struct Charlike { char ch_; TEST_CONSTEXPR Charlike(char ch) : ch_(ch) {} TEST_CONSTEXPR operator char() const { return ch_; } }; template TEST_CONSTEXPR_CXX20 void test_string() { S s; Charlike > a[] = {'m', 'a', 'h', 'i'}; s.append(a, a + 4); s.assign(a, a + 4); s.insert(s.begin(), a, a + 4); s.replace(s.begin(), s.begin() + 4, a, a + 4); assert(s == "mahimahi"); } TEST_CONSTEXPR_CXX20 bool test() { test_string(); return true; } int main(int, char**) { test(); #if TEST_STD_VER > 17 static_assert(test()); #endif return 0; }