operator_==.pass.cpp revision b64f8b07c104c6cc986570ac8ee0ed16a9f23976
1a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)//===----------------------------------------------------------------------===//
2a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)//
3a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)//                     The LLVM Compiler Infrastructure
4a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)//
5a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// This file is dual licensed under the MIT and the University of Illinois Open
6a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// Source Licenses. See LICENSE.TXT for details.
7a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)//
8a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)//===----------------------------------------------------------------------===//
9a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
10a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// <functional>
11a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
12a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// class function<R(ArgTypes...)>
13a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
14a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// template <MoveConstructible R, MoveConstructible ... ArgTypes>
15a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)//   bool operator==(const function<R(ArgTypes...)>&, nullptr_t);
16a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)//
17a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// template <MoveConstructible R, MoveConstructible ... ArgTypes>
18a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)//   bool operator==(nullptr_t, const function<R(ArgTypes...)>&);
19a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)//
20a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// template <MoveConstructible R, MoveConstructible ... ArgTypes>
21a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)//   bool operator!=(const function<R(ArgTypes...)>&, nullptr_t);
22a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)//
23a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)// template <MoveConstructible  R, MoveConstructible ... ArgTypes>
24a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)//   bool operator!=(nullptr_t, const function<R(ArgTypes...)>&);
25a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
26a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include <functional>
27a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)#include <cassert>
28a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)
29a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)int g(int) {return 0;}
305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
31a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)int main()
32a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles){
33a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    {
345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    std::function<int(int)> f;
355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)    assert(f == nullptr);
36a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    assert(nullptr == f);
37a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    f = g;
38a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    assert(f != nullptr);
39a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    assert(nullptr != f);
40a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)    }
41a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}
42a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)