1c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)//===----------------------------------------------------------------------===//
2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)//
3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)//                     The LLVM Compiler Infrastructure
4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)//
5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// This file is dual licensed under the MIT and the University of Illinois Open
6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Source Licenses. See LICENSE.TXT for details.
7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)//
8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)//===----------------------------------------------------------------------===//
9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// <locale>
11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// class num_put<charT, OutputIterator>
13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// iter_type put(iter_type s, ios_base& iob, char_type fill, void* v) const;
15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include <locale>
17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include <ios>
18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include <cassert>
19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include <streambuf>
20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "test_iterators.h"
21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)typedef std::num_put<char, output_iterator<char*> > F;
23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)class my_facet
25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    : public F
26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles){
27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)public:
28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    explicit my_facet(std::size_t refs = 0)
29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)        : F(refs) {}
30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)};
31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
32int main()
33{
34    const my_facet f(1);
35    {
36        std::ios ios(0);
37        void* v = 0;
38        char str[50];
39        output_iterator<char*> iter = f.put(output_iterator<char*>(str), ios, '*', v);
40        std::string ex(str, iter.base());
41        assert(ex == "0x0" || ex == "(nil)");
42    }
43}
44