//===----------------------------------------------------------------------===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <functional>
// template<Returnable R, class T, CopyConstructible... Args>
// unspecified mem_fn(R (T::* pm)(Args...));
#include<functional>#include<cassert>structA{chartest0(){return'a';}chartest1(int){return'b';}chartest2(int,double){return'c';}};template<classF>voidtest0(Ff){{Aa;assert(f(a)=='a');A*ap=&a;assert(f(ap)=='a');}}template<classF>voidtest1(Ff){{Aa;assert(f(a,1)=='b');A*ap=&a;assert(f(ap,2)=='b');}}template<classF>voidtest2(Ff){{Aa;assert(f(a,1,2)=='c');A*ap=&a;assert(f(ap,2,3.5)=='c');}}intmain(){test0(std::mem_fn(&A::test0));test1(std::mem_fn(&A::test1));test2(std::mem_fn(&A::test2));}