1ee226c05af9e0187098f43fb71465a581487af9bDan Austin//===----------------------------------------------------------------------===//
2ee226c05af9e0187098f43fb71465a581487af9bDan Austin//
3ee226c05af9e0187098f43fb71465a581487af9bDan Austin//                     The LLVM Compiler Infrastructure
4ee226c05af9e0187098f43fb71465a581487af9bDan Austin//
5ee226c05af9e0187098f43fb71465a581487af9bDan Austin// This file is dual licensed under the MIT and the University of Illinois Open
6ee226c05af9e0187098f43fb71465a581487af9bDan Austin// Source Licenses. See LICENSE.TXT for details.
7ee226c05af9e0187098f43fb71465a581487af9bDan Austin//
8ee226c05af9e0187098f43fb71465a581487af9bDan Austin//===----------------------------------------------------------------------===//
9ee226c05af9e0187098f43fb71465a581487af9bDan Austin
10ee226c05af9e0187098f43fb71465a581487af9bDan Austin// UNSUPPORTED: c++98, c++03, c++11
11ee226c05af9e0187098f43fb71465a581487af9bDan Austin
12ee226c05af9e0187098f43fb71465a581487af9bDan Austin// <experimental/iterator>
13ee226c05af9e0187098f43fb71465a581487af9bDan Austin//
14ee226c05af9e0187098f43fb71465a581487af9bDan Austin// template <class _Delim, class _CharT = char, class _Traits = char_traits<_CharT>>
15ee226c05af9e0187098f43fb71465a581487af9bDan Austin//   class ostream_joiner;
16ee226c05af9e0187098f43fb71465a581487af9bDan Austin//
17ee226c05af9e0187098f43fb71465a581487af9bDan Austin//   ostream_joiner & operator++(int) noexcept
18ee226c05af9e0187098f43fb71465a581487af9bDan Austin//     returns *this;
19ee226c05af9e0187098f43fb71465a581487af9bDan Austin
20ee226c05af9e0187098f43fb71465a581487af9bDan Austin#include <experimental/iterator>
21ee226c05af9e0187098f43fb71465a581487af9bDan Austin#include <iostream>
22ee226c05af9e0187098f43fb71465a581487af9bDan Austin#include <cassert>
23ee226c05af9e0187098f43fb71465a581487af9bDan Austin
24ee226c05af9e0187098f43fb71465a581487af9bDan Austin#include "test_macros.h"
25ee226c05af9e0187098f43fb71465a581487af9bDan Austin
26ee226c05af9e0187098f43fb71465a581487af9bDan Austinnamespace exp = std::experimental;
27ee226c05af9e0187098f43fb71465a581487af9bDan Austin
28ee226c05af9e0187098f43fb71465a581487af9bDan Austintemplate <class Delim, class CharT, class Traits>
29ee226c05af9e0187098f43fb71465a581487af9bDan Austinvoid test ( exp::ostream_joiner<Delim, CharT, Traits> &oj ) {
30ee226c05af9e0187098f43fb71465a581487af9bDan Austin    static_assert((noexcept(oj++)), "" );
31ee226c05af9e0187098f43fb71465a581487af9bDan Austin    exp::ostream_joiner<Delim, CharT, Traits> &ret = oj++;
32ee226c05af9e0187098f43fb71465a581487af9bDan Austin    assert( &ret == &oj );
33ee226c05af9e0187098f43fb71465a581487af9bDan Austin    }
34ee226c05af9e0187098f43fb71465a581487af9bDan Austin
35ee226c05af9e0187098f43fb71465a581487af9bDan Austinint main () {
36ee226c05af9e0187098f43fb71465a581487af9bDan Austin
37ee226c05af9e0187098f43fb71465a581487af9bDan Austin    { exp::ostream_joiner<char>         oj(std::cout, '8');                 test(oj); }
38ee226c05af9e0187098f43fb71465a581487af9bDan Austin    { exp::ostream_joiner<std::string>  oj(std::cout, std::string("9"));    test(oj); }
39ee226c05af9e0187098f43fb71465a581487af9bDan Austin    { exp::ostream_joiner<std::wstring> oj(std::cout, std::wstring(L"10")); test(oj); }
40ee226c05af9e0187098f43fb71465a581487af9bDan Austin    { exp::ostream_joiner<int>          oj(std::cout, 11);                  test(oj); }
41ee226c05af9e0187098f43fb71465a581487af9bDan Austin
42ee226c05af9e0187098f43fb71465a581487af9bDan Austin    { exp::ostream_joiner<char, wchar_t>         oj(std::wcout, '8');                 test(oj); }
43ee226c05af9e0187098f43fb71465a581487af9bDan Austin    { exp::ostream_joiner<std::string, wchar_t>  oj(std::wcout, std::string("9"));    test(oj); }
44ee226c05af9e0187098f43fb71465a581487af9bDan Austin    { exp::ostream_joiner<std::wstring, wchar_t> oj(std::wcout, std::wstring(L"10")); test(oj); }
45ee226c05af9e0187098f43fb71465a581487af9bDan Austin    { exp::ostream_joiner<int, wchar_t>          oj(std::wcout, 11);                  test(oj); }
46ee226c05af9e0187098f43fb71465a581487af9bDan Austin    }
47