68 lines · cpp
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9// UNSUPPORTED: c++03, c++1110// UNSUPPORTED: no-localization11 12// <experimental/iterator>13//14// template <class _Delim, class _CharT = char, class _Traits = char_traits<_CharT>>15// class ostream_joiner;16//17// ostream_joiner(ostream_type& __os, _Delim&& __d);18// ostream_joiner(ostream_type& __os, const _Delim& __d);19 20#include <experimental/iterator>21#include <iostream>22#include <string>23 24#include "test_macros.h"25 26namespace exper = std::experimental;27 28int main(int, char**) {29 const char eight = '8';30 const std::string nine = "9";31#ifndef TEST_HAS_NO_WIDE_CHARACTERS32 const std::wstring ten = L"10";33#endif34 const int eleven = 11;35 36 // Narrow streams w/rvalues37 { exper::ostream_joiner<char> oj(std::cout, '8'); }38 { exper::ostream_joiner<std::string> oj(std::cout, std::string("9")); }39#ifndef TEST_HAS_NO_WIDE_CHARACTERS40 { exper::ostream_joiner<std::wstring> oj(std::cout, std::wstring(L"10")); }41#endif42 { exper::ostream_joiner<int> oj(std::cout, 11); }43 44 // Narrow streams w/lvalues45 { exper::ostream_joiner<char> oj(std::cout, eight); }46 { exper::ostream_joiner<std::string> oj(std::cout, nine); }47#ifndef TEST_HAS_NO_WIDE_CHARACTERS48 { exper::ostream_joiner<std::wstring> oj(std::cout, ten); }49#endif50 { exper::ostream_joiner<int> oj(std::cout, eleven); }51 52#ifndef TEST_HAS_NO_WIDE_CHARACTERS53 // Wide streams w/rvalues54 { exper::ostream_joiner<char, wchar_t> oj(std::wcout, '8'); }55 { exper::ostream_joiner<std::string, wchar_t> oj(std::wcout, std::string("9")); }56 { exper::ostream_joiner<std::wstring, wchar_t> oj(std::wcout, std::wstring(L"10")); }57 { exper::ostream_joiner<int, wchar_t> oj(std::wcout, 11); }58 59 // Wide streams w/lvalues60 { exper::ostream_joiner<char, wchar_t> oj(std::wcout, eight); }61 { exper::ostream_joiner<std::string, wchar_t> oj(std::wcout, nine); }62 { exper::ostream_joiner<std::wstring, wchar_t> oj(std::wcout, ten); }63 { exper::ostream_joiner<int, wchar_t> oj(std::wcout, eleven); }64#endif65 66 return 0;67}68