has_xxx とは型 x にネストされた名前 name があるかどうか調べるメタ関数の総称です。名前空間またはクラスのスコープでクラステンプレート has_name を定義し、その上で has_name<x>::value などとして使います。 本の虫: C++11におけるモダンなhas_xxxの実装 しかし、一発で has(x, name) と書けると素敵です。C++14 で入るであろう Generic Lambdas (N3559) を使ってそれを書いてみました。 ※ Concept Lite (N3580) の requires expression が来れば、素直にそれを使うべきです。 // 下準備... namespace has_xxx_detail { template <class F, class G> struct overload_result : F, G { o
