1059256914c5dd8684c44629a020aac50159d1401Marshall Clow//===----------------------------------------------------------------------===// 2059256914c5dd8684c44629a020aac50159d1401Marshall Clow// 3059256914c5dd8684c44629a020aac50159d1401Marshall Clow// The LLVM Compiler Infrastructure 4059256914c5dd8684c44629a020aac50159d1401Marshall Clow// 5059256914c5dd8684c44629a020aac50159d1401Marshall Clow// This file is dual licensed under the MIT and the University of Illinois Open 6059256914c5dd8684c44629a020aac50159d1401Marshall Clow// Source Licenses. See LICENSE.TXT for details. 7059256914c5dd8684c44629a020aac50159d1401Marshall Clow// 8059256914c5dd8684c44629a020aac50159d1401Marshall Clow//===----------------------------------------------------------------------===// 9059256914c5dd8684c44629a020aac50159d1401Marshall Clow 10059256914c5dd8684c44629a020aac50159d1401Marshall Clow// <functional> 11059256914c5dd8684c44629a020aac50159d1401Marshall Clow 12059256914c5dd8684c44629a020aac50159d1401Marshall Clow// template<cReturnable S, ClassType T> 13059256914c5dd8684c44629a020aac50159d1401Marshall Clow// const_mem_fun_t<S,T> 14059256914c5dd8684c44629a020aac50159d1401Marshall Clow// mem_fun(S (T::*f)() const); 152e390822e56bb0dbd876d02f806dc19f0f97f0a6Marshall Clow// Removed in c++17 16059256914c5dd8684c44629a020aac50159d1401Marshall Clow// UNSUPPORTED: c++98, c++03, c++11, c++14 17059256914c5dd8684c44629a020aac50159d1401Marshall Clow 18059256914c5dd8684c44629a020aac50159d1401Marshall Clow#include <functional> 19059256914c5dd8684c44629a020aac50159d1401Marshall Clow#include <cassert> 20059256914c5dd8684c44629a020aac50159d1401Marshall Clow 21059256914c5dd8684c44629a020aac50159d1401Marshall Clow#include "test_macros.h" 22059256914c5dd8684c44629a020aac50159d1401Marshall Clow 23059256914c5dd8684c44629a020aac50159d1401Marshall Clowstruct A 24059256914c5dd8684c44629a020aac50159d1401Marshall Clow{ 25059256914c5dd8684c44629a020aac50159d1401Marshall Clow char a1() {return 5;} 26059256914c5dd8684c44629a020aac50159d1401Marshall Clow short a2(int i) {return short(i+1);} 27059256914c5dd8684c44629a020aac50159d1401Marshall Clow int a3() const {return 1;} 28059256914c5dd8684c44629a020aac50159d1401Marshall Clow double a4(unsigned i) const {return i-1;} 29059256914c5dd8684c44629a020aac50159d1401Marshall Clow}; 30059256914c5dd8684c44629a020aac50159d1401Marshall Clow 31059256914c5dd8684c44629a020aac50159d1401Marshall Clowint main() 32059256914c5dd8684c44629a020aac50159d1401Marshall Clow{ 33059256914c5dd8684c44629a020aac50159d1401Marshall Clow const A a = A(); 34059256914c5dd8684c44629a020aac50159d1401Marshall Clow assert(std::mem_fun(&A::a3)(&a) == 1); 35059256914c5dd8684c44629a020aac50159d1401Marshall Clow} 36