//===----------------------------------------------------------------------===//
//
// 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> unspecified mem_fn(R T::* pm);
#include<functional>#include<cassert>structA{doubledata_;};template<classF>voidtest(Ff){{Aa;f(a)=5;assert(a.data_==5);A*ap=&a;f(ap)=6;assert(a.data_==6);constA*cap=ap;assert(f(cap)==f(ap));f(cap)=7;}}intmain(){test(std::mem_fn(&A::data_));}