1// { dg-options "-std=gnu++0x" }
2
3// Copyright (C) 2009 Free Software Foundation, Inc.
4//
5// This file is part of the GNU ISO C++ Library.  This library is free
6// software; you can redistribute it and/or modify it under the
7// terms of the GNU General Public License as published by the
8// Free Software Foundation; either version 3, or (at your option)
9// any later version.
10
11// This library is distributed in the hope that it will be useful,
12// but WITHOUT ANY WARRANTY; without even the implied warranty of
13// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14// GNU General Public License for more details.
15
16// You should have received a copy of the GNU General Public License along
17// with this library; see the file COPYING3.  If not see
18// <http://www.gnu.org/licenses/>.
19
20#include <system_error>
21#include <testsuite_hooks.h>
22
23enum my_errc { my_err = 0 };
24
25class my_error_category_impl
26: public std::error_category
27{
28public:
29  const char* name() const { return ""; }
30  std::string message(int) const { return ""; }
31} my_error_category_instance;
32
33std::error_condition
34make_error_condition(my_errc e)
35{
36  return std::error_condition(static_cast<int>(e),
37			      my_error_category_instance);
38}
39
40namespace std
41{
42  template<>
43    struct is_error_condition_enum<my_errc>
44    : public true_type { };
45}
46
47// libstdc++/39881
48void test01()
49{
50  bool test __attribute__((unused)) = true;
51
52  std::error_condition ec2;
53  ec2 = my_err;
54  VERIFY( ec2 == make_error_condition(my_err) );
55}
56
57int main()
58{
59  test01();
60  return 0;
61}
62