これは、実装に2秒もかからないものに対するばかげた質問だと思います。しかし、私は漠然と、新しい標準が導入されたことを読んだことを覚えています。
私はVC10のヘッダーをgrepして、何も思いつきませんでした。手伝ってくれますか?それは私を悩ませています!:)
編集:
考え直して、私が覚えていた新しいファンクターはおそらく無関係std::default_deleter
でした。
これは、実装に2秒もかからないものに対するばかげた質問だと思います。しかし、私は漠然と、新しい標準が導入されたことを読んだことを覚えています。
私はVC10のヘッダーをgrepして、何も思いつきませんでした。手伝ってくれますか?それは私を悩ませています!:)
編集:
考え直して、私が覚えていた新しいファンクターはおそらく無関係std::default_deleter
でした。
いつでもno-opラムダを書くことができます:[]{}
私はこれを、値を返さないファンクターを期待する場合のドロップインノーオペレーションとして使用します。
struct VoidNoOp {
void operator()() const { }
template<class A>
void operator()(A a) const { (void)(a); }
template<class A, class B>
void operator()(A a, B b) const { (void)(a); (void)(b); }
template<class A, class B, class C>
void operator()(A a, B b, C c) const { (void)(a); (void)(b); (void)(c); }
};
これは、任意の数のパラメーターのC++11バリエーションです。
struct VoidNoOp {
void operator()() const { };
template<typename P1, typename... Params>
void operator()(P1 p1, Params... parameters) {
(void)(p1); // we do this just to remove warnings -- requires the recursion
operator()(parameters...);
}
};
これはどう?
// Return a noop function
template <typename T>
struct noop
{
T return_val;
noop (T retval = T ())
: return_val (retval)
{
}
T
operator (...)
{
return return_val;
}
};
template <>
struct noop<void>
{
void
operator (...)
{
}
};
これは、ほぼすべての用途で機能するはずです。
あなたはおそらく、同じことではない恒等関数(std :: Identityであり、現在のドラフトでは削除されているようです)について考えていたでしょう。