名前空間
変種
操作

std::is_bind_expression

提供: cppreference.com
< cpp‎ | utility‎ | functional
 
 
ユーティリティライブラリ
汎用ユーティリティ
日付と時間
関数オブジェクト
書式化ライブラリ (C++20)
(C++11)
関係演算子 (C++20で非推奨)
整数比較関数
(C++20)
スワップと型操作
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
一般的な語彙の型
(C++11)
(C++17)
(C++17)
(C++17)
(C++17)

初等文字列変換
(C++17)
(C++17)
 
関数オブジェクト
関数ラッパー
(C++11)
(C++11)
関数の部分適用
(C++20)
(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
[静的]
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(), _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]