1a64111c95ac2e7bc337def0426d512c81307c166Howard Hinnant//===----------------------------------------------------------------------===//
2a64111c95ac2e7bc337def0426d512c81307c166Howard Hinnant//
3a64111c95ac2e7bc337def0426d512c81307c166Howard Hinnant//                     The LLVM Compiler Infrastructure
4a64111c95ac2e7bc337def0426d512c81307c166Howard Hinnant//
5b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open
6b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// Source Licenses. See LICENSE.TXT for details.
7a64111c95ac2e7bc337def0426d512c81307c166Howard Hinnant//
8a64111c95ac2e7bc337def0426d512c81307c166Howard Hinnant//===----------------------------------------------------------------------===//
9a64111c95ac2e7bc337def0426d512c81307c166Howard Hinnant
10a64111c95ac2e7bc337def0426d512c81307c166Howard Hinnant// <random>
11a64111c95ac2e7bc337def0426d512c81307c166Howard Hinnant
12a64111c95ac2e7bc337def0426d512c81307c166Howard Hinnant// template<class RealType = double>
13a64111c95ac2e7bc337def0426d512c81307c166Howard Hinnant// class normal_distribution
14a64111c95ac2e7bc337def0426d512c81307c166Howard Hinnant
15a64111c95ac2e7bc337def0426d512c81307c166Howard Hinnant// template <class CharT, class Traits, class RealType>
16a64111c95ac2e7bc337def0426d512c81307c166Howard Hinnant// basic_ostream<CharT, Traits>&
17a64111c95ac2e7bc337def0426d512c81307c166Howard Hinnant// operator<<(basic_ostream<CharT, Traits>& os,
18a64111c95ac2e7bc337def0426d512c81307c166Howard Hinnant//            const normal_distribution<RealType>& x);
19a64111c95ac2e7bc337def0426d512c81307c166Howard Hinnant
20a64111c95ac2e7bc337def0426d512c81307c166Howard Hinnant// template <class CharT, class Traits, class RealType>
21a64111c95ac2e7bc337def0426d512c81307c166Howard Hinnant// basic_istream<CharT, Traits>&
22a64111c95ac2e7bc337def0426d512c81307c166Howard Hinnant// operator>>(basic_istream<CharT, Traits>& is,
23a64111c95ac2e7bc337def0426d512c81307c166Howard Hinnant//            normal_distribution<RealType>& x);
24a64111c95ac2e7bc337def0426d512c81307c166Howard Hinnant
25a64111c95ac2e7bc337def0426d512c81307c166Howard Hinnant#include <random>
26a64111c95ac2e7bc337def0426d512c81307c166Howard Hinnant#include <sstream>
27a64111c95ac2e7bc337def0426d512c81307c166Howard Hinnant#include <cassert>
28a64111c95ac2e7bc337def0426d512c81307c166Howard Hinnant
29a64111c95ac2e7bc337def0426d512c81307c166Howard Hinnantint main()
30a64111c95ac2e7bc337def0426d512c81307c166Howard Hinnant{
31a64111c95ac2e7bc337def0426d512c81307c166Howard Hinnant    {
32a64111c95ac2e7bc337def0426d512c81307c166Howard Hinnant        typedef std::normal_distribution<> D;
33a64111c95ac2e7bc337def0426d512c81307c166Howard Hinnant        D d1(7, 5);
34a64111c95ac2e7bc337def0426d512c81307c166Howard Hinnant        std::ostringstream os;
35a64111c95ac2e7bc337def0426d512c81307c166Howard Hinnant        os << d1;
36a64111c95ac2e7bc337def0426d512c81307c166Howard Hinnant        std::istringstream is(os.str());
37a64111c95ac2e7bc337def0426d512c81307c166Howard Hinnant        D d2;
38a64111c95ac2e7bc337def0426d512c81307c166Howard Hinnant        is >> d2;
39a64111c95ac2e7bc337def0426d512c81307c166Howard Hinnant        assert(d1 == d2);
40a64111c95ac2e7bc337def0426d512c81307c166Howard Hinnant    }
41a64111c95ac2e7bc337def0426d512c81307c166Howard Hinnant}
42