//===----------------------------------------------------------------------===// // // The LLVM Compiler Infrastructure // // This file is dual licensed under the MIT and the University of Illinois Open // Source Licenses. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // UNSUPPORTED: c++98, c++03, c++11 // // // template > // class ostream_joiner; // // ostream_joiner & operator*() noexcept // returns *this; #include #include #include #include "test_macros.h" namespace exp = std::experimental; template void test ( exp::ostream_joiner &oj ) { static_assert((noexcept(*oj)), "" ); exp::ostream_joiner &ret = *oj; assert( &ret == &oj ); } int main () { { exp::ostream_joiner oj(std::cout, '8'); test(oj); } { exp::ostream_joiner oj(std::cout, std::string("9")); test(oj); } { exp::ostream_joiner oj(std::cout, std::wstring(L"10")); test(oj); } { exp::ostream_joiner oj(std::cout, 11); test(oj); } { exp::ostream_joiner oj(std::wcout, '8'); test(oj); } { exp::ostream_joiner oj(std::wcout, std::string("9")); test(oj); } { exp::ostream_joiner oj(std::wcout, std::wstring(L"10")); test(oj); } { exp::ostream_joiner oj(std::wcout, 11); test(oj); } }