- functional[meta header]
- std[meta namespace]
- class template[meta id-type]
- cpp11[meta cpp]
namespace std {
template <class T>
struct is_placeholder;
template <class T>
inline constexpr int is_placeholder_v = is_placeholder<T>::value; // C++17
}
型 T
がプレースホルダかどうかを判別する
is_placeholder
は、型 T
がプレースホルダを示す(std::placeholders::_1
, std::placeholders::_2
, ...)ならば std::integral_constant
<int, J>
から派生(ただし、J
は何番目のプレースホルダを示すかの値)し、そうでなければ std::integral_constant
<int, 0>
から派生する。
ヒント: ユーザ定義の型に対して is_placeholder
を特殊化してプレースホルダとして扱わせることも可能である。
#include <functional>
static_assert(std::is_placeholder<decltype(std::placeholders::_1)>::value, "a placeholder");
static_assert(!std::is_placeholder< std::less<int> >::value, "not a placeholder");
int main() {}
- std::is_placeholder[color ff0000]
- std::placeholders::_1[link placeholders.md]
- std::less[link less.md]
- C++11
- Clang: ??
- GCC: 4.7.0 [mark verified]
- ICC: ??
- Visual C++: ??