名前空間
変種
操作

std::is_bind_expression

提供: cppreference.com
< cpp‎ | utility‎ | functional
 
 
 
関数オブジェクト
関数ラッパー
(C++11)
(C++11)
バインド
(C++11)
is_bind_expression
(C++11)
関数呼び出し
(C++17)
恒等関数オブジェクト
(C++20)
参照ラッパー
(C++11)(C++11)
演算子ラッパー
否定子
(C++17)
検索子
古いバインダとアダプタ
(C++17以前)
(C++17以前)
(C++17以前)
(C++17以前)
(C++17以前)(C++17以前)(C++17以前)(C++17以前)
(C++20以前)
(C++20以前)
(C++17以前)(C++17以前)
(C++17以前)(C++17以前)

(C++17以前)
(C++17以前)(C++17以前)(C++17以前)(C++17以前)
(C++20以前)
(C++20以前)
 
ヘッダ <functional> で定義
template< class T >
struct is_bind_expression;
(C++11およびそれ以降)

Tstd::bind の呼び出しによって生成される型の場合、このテンプレートは std::true_type から派生します。 それ以外のあらゆる型に対しては、このテンプレートは std::false_type から派生します。

このテンプレートは、 T が bind 部分式の型であるかのように std::bind によって取り扱われるべきであることを示すために std::true_typeBaseCharacteristic を持つ UnaryTypeTrait を実装するために、ユーザ定義型 T に対して特殊化しても構いません。 bind の生成した関数オブジェクトが呼び出されるとき、この型の束縛引数は関数オブジェクトとして呼び出され、 bind の生成したオブジェクトに渡される未束縛引数がすべて与えられます。

目次

[編集] ヘルパー変数テンプレート

template< class T >
inline constexpr bool is_bind_expression_v = is_bind_expression<T>::value;
(C++17およびそれ以降)

std::integral_constant から継承

メンバ定数

value
[static]
Tstd::bind によって生成された関数オブジェクトならば true、そうでなければ false
(パブリック静的メンバ定数)

メンバ関数

operator bool
オブジェクトを bool に変換します。 value を返します
(パブリックメンバ関数)
operator()
(C++14)
value を返します
(パブリックメンバ関数)

メンバ型

定義
value_type bool
type std::integral_constant<bool, value>

[編集]

#include <iostream>
#include <type_traits>
#include <functional>
 
struct MyBind {
    typedef int result_type;
    int operator()(int a, int b) const { return a + b; }
};
 
namespace std {
    template<>
    struct is_bind_expression<MyBind> : public true_type {};
}
 
int f(int n1, int n2)
{
    return n1+n2;
}
 
int main()
{
    // as if bind(f, bind(MyBind::operator(), _1, _2), 2)
    auto b = std::bind(f, MyBind(), 2); 
 
    std::cout << "Adding 2 to the sum of 10 and 11 gives " << b(10, 11) << '\n';
}

出力:

Adding 2 to the sum of 10 and 11 gives 23

[編集] 関連項目

(C++11)
関数オブジェクトに1つ以上の引数をバインドします
(関数テンプレート) [edit]