namespace placeholders {
_INLINE_VAR constexpr _Ph<1> _1{};
_INLINE_VAR constexpr _Ph<2> _2{};
_INLINE_VAR constexpr _Ph<3> _3{};
_INLINE_VAR constexpr _Ph<4> _4{};
_INLINE_VAR constexpr _Ph<5> _5{};
_INLINE_VAR constexpr _Ph<6> _6{};
_INLINE_VAR constexpr _Ph<7> _7{};
_INLINE_VAR constexpr _Ph<8> _8{};
_INLINE_VAR constexpr _Ph<9> _9{};
_INLINE_VAR constexpr _Ph<10> _10{};
_INLINE_VAR constexpr _Ph<11> _11{};
_INLINE_VAR constexpr _Ph<12> _12{};
_INLINE_VAR constexpr _Ph<13> _13{};
_INLINE_VAR constexpr _Ph<14> _14{};
_INLINE_VAR constexpr _Ph<15> _15{};
_INLINE_VAR constexpr _Ph<16> _16{};
_INLINE_VAR constexpr _Ph<17> _17{};
_INLINE_VAR constexpr _Ph<18> _18{};
_INLINE_VAR constexpr _Ph<19> _19{};
_INLINE_VAR constexpr _Ph<20> _20{};
} // namespace placeholders
#include <functional>
#include <string>
#include <iostream>
void goodbye(const std::string& s)
{
std::cout << "Goodbye " << s << '\n';
}
class Object {
public:
void hello(const std::string& s)
{
std::cout << "Hello " << s << '\n';
}
};
int main(int argc, char* argv[])
{
typedef std::function<void(const std::string&)> ExampleFunction;
Object instance;
std::string str("World");
ExampleFunction f = std::bind(&Object::hello, &instance,
std::placeholders::_1);
// equivalent to instance.hello(str)
f(str);
f = std::bind(&goodbye, std::placeholders::_1);
// equivalent to goodbye(str)
f(str);
return 0;
}