//===----------------------------------------------------------------------===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <functional>
// class function<R(ArgTypes...)>
// R operator()(ArgTypes... args) const
#include<functional>#include<cassert>// member data pointer: cv qualifiers should transfer from argument to return type
structA_int_1{A_int_1():data_(5){}intdata_;};voidtest_int_1(){// member data pointer
{intA_int_1::*fp=&A_int_1::data_;A_int_1a;std::function<int&(constA_int_1*)>r2(fp);constA_int_1*ap=&a;assert(r2(ap)==6);r2(ap)=7;assert(r2(ap)==7);}}intmain(){test_int_1();}