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)