logical_not.pass.cpp revision ff46409221ea91df3c5413ba06eed2f6ba963444
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===//
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//                     The LLVM Compiler Infrastructure
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This file is dual licensed under the MIT and the University of Illinois Open
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Source Licenses. See LICENSE.TXT for details.
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===//
95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// <functional>
115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// logical_not
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include <functional>
155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include <type_traits>
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <cassert>
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int main()
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    typedef std::logical_not<int> F;
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const F f = F();
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    static_assert((std::is_base_of<std::unary_function<int, bool>, F>::value), "");
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    assert(!f(36));
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    assert(f(0));
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if _LIBCPP_STD_VER > 11
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    typedef std::logical_not<> F2;
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const F2 f2 = F2();
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    assert(!f2(36));
291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    assert( f2(0));
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    assert(!f2(36L));
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    assert( f2(0L));
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)