//===----------------------------------------------------------------------===//
//
// 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<new>#include<cstdlib>#include<cassert>// 0 args, return void
intcount=0;voidf_void_0(){++count;}structA_void_0{voidoperator()(){++count;}};voidtest_void_0(){intsave_count=count;// function
{std::function<void()>r1(f_void_0);r1();assert(count==save_count+1);save_count=count;}// function pointer
{void(*fp)()=f_void_0;std::function<void()>r1(fp);r1();assert(count==save_count+1);save_count=count;}// functor
{A_void_0a0;std::function<void()>r1(a0);r1();assert(count==save_count+1);save_count=count;}}intmain(){test_void_0();}