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