次の方法で共有


_1 オブジェクト

置き換え可能な引数のプレースホルダーです。

構文

namespace placeholders {
    extern unspecified _1, _2, ... _N
} // namespace placeholders (within std)

解説

_1, _2, ... _N の各オブジェクトは、bind によって返されたオブジェクトに対する関数呼び出しにおいて、それぞれ 1 番目から N 番目の引数を表すプレースホルダーです。 たとえば、bind 式が評価されるときに 6 番目の引数が挿入される場所を指定するには、_6 を使用します。

Microsoft の実装では、_N の値は 20 です。

// std__functional_placeholder.cpp
// compile with: /EHsc
#include <functional>
#include <algorithm>
#include <iostream>

using namespace std::placeholders;

void square(double x)
    {
    std::cout << x << "^2 == " << x * x << std::endl;
    }

void product(double x, double y)
    {
    std::cout << x << "*" << y << " == " << x * y << std::endl;
    }

int main()
    {
    double arg[] = {1, 2, 3};

    std::for_each(&arg[0], &arg[3], square);
    std::cout << std::endl;

    std::for_each(&arg[0], &arg[3], std::bind(product, _1, 2));
    std::cout << std::endl;

    std::for_each(&arg[0], &arg[3], std::bind(square, _1));

    return (0);
    }
1^2 == 1
2^2 == 4
3^2 == 9

1*2 == 2
2*2 == 4
3*2 == 6

1^2 == 1
2^2 == 4
3^2 == 9