//===----------------------------------------------------------------------===//
//
// 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>// 0 args, return int
intcount=0;intf_int_0(){return3;}structA_int_0{intoperator()(){return4;}};voidtest_int_0(){// function
{std::function<int()>r1(f_int_0);assert(r1()==3);}// function pointer
{int(*fp)()=f_int_0;std::function<int()>r1(fp);assert(r1()==3);}// functor
{A_int_0a0;std::function<int()>r1(a0);assert(r1()==4);}}intmain(){test_int_0();}