summaryrefslogtreecommitdiffstats
path: root/libcxx/test/std/iterators/stream.iterators
diff options
context:
space:
mode:
authorEric Fiselier <eric@efcs.ca>2016-05-17 21:01:20 +0000
committerEric Fiselier <eric@efcs.ca>2016-05-17 21:01:20 +0000
commit6a05b007ff872674883df8067f4a28864cd2f78e (patch)
tree8752edf845c7a38563d476491ef30caa9eb95c69 /libcxx/test/std/iterators/stream.iterators
parent0c3a85a327f16ff9068676cfc3b305ce6cc77380 (diff)
downloadbcm5719-llvm-6a05b007ff872674883df8067f4a28864cd2f78e.tar.gz
bcm5719-llvm-6a05b007ff872674883df8067f4a28864cd2f78e.zip
Test hijacking ADL for operator& in the stream iterator constructors.
llvm-svn: 269838
Diffstat (limited to 'libcxx/test/std/iterators/stream.iterators')
-rw-r--r--libcxx/test/std/iterators/stream.iterators/ostream.iterator/ostream.iterator.cons.des/ostream.pass.cpp20
-rw-r--r--libcxx/test/std/iterators/stream.iterators/ostream.iterator/ostream.iterator.cons.des/ostream_delim.pass.cpp13
2 files changed, 30 insertions, 3 deletions
diff --git a/libcxx/test/std/iterators/stream.iterators/ostream.iterator/ostream.iterator.cons.des/ostream.pass.cpp b/libcxx/test/std/iterators/stream.iterators/ostream.iterator/ostream.iterator.cons.des/ostream.pass.cpp
index 321cfbdb82c..6366355cc10 100644
--- a/libcxx/test/std/iterators/stream.iterators/ostream.iterator/ostream.iterator.cons.des/ostream.pass.cpp
+++ b/libcxx/test/std/iterators/stream.iterators/ostream.iterator/ostream.iterator.cons.des/ostream.pass.cpp
@@ -17,9 +17,23 @@
#include <sstream>
#include <cassert>
+struct MyTraits : std::char_traits<char> {};
+
+typedef std::basic_ostringstream<char, MyTraits> StringStream;
+typedef std::basic_ostream<char, MyTraits> BasicStream;
+
+void operator&(BasicStream const&) {}
+
int main()
{
- std::ostringstream outf;
- std::ostream_iterator<int> i(outf);
- assert(outf.good());
+ {
+ std::ostringstream outf;
+ std::ostream_iterator<int> i(outf);
+ assert(outf.good());
+ }
+ {
+ StringStream outf;
+ std::ostream_iterator<int, char, MyTraits> i(outf);
+ assert(outf.good());
+ }
}
diff --git a/libcxx/test/std/iterators/stream.iterators/ostream.iterator/ostream.iterator.cons.des/ostream_delim.pass.cpp b/libcxx/test/std/iterators/stream.iterators/ostream.iterator/ostream.iterator.cons.des/ostream_delim.pass.cpp
index 8e5c771a4ab..69c2dfc9b5f 100644
--- a/libcxx/test/std/iterators/stream.iterators/ostream.iterator/ostream.iterator.cons.des/ostream_delim.pass.cpp
+++ b/libcxx/test/std/iterators/stream.iterators/ostream.iterator/ostream.iterator.cons.des/ostream_delim.pass.cpp
@@ -17,6 +17,14 @@
#include <sstream>
#include <cassert>
+
+struct MyTraits : std::char_traits<char> {};
+
+typedef std::basic_ostringstream<char, MyTraits> StringStream;
+typedef std::basic_ostream<char, MyTraits> BasicStream;
+
+void operator&(BasicStream const&) {}
+
int main()
{
{
@@ -29,4 +37,9 @@ int main()
std::ostream_iterator<double, wchar_t> i(outf, L", ");
assert(outf.good());
}
+ {
+ StringStream outf;
+ std::ostream_iterator<int, char, MyTraits> i(outf, ", ");
+ assert(outf.good());
+ }
}
OpenPOWER on IntegriCloud