find_if、count_ifなどのstlアルゴリズムの述語を設計する必要があります。
namespace lib
{
struct Finder
{
Finder( const std::string& name ):
name_( name )
{
}
template< typename TElement >
bool operator( const TElement& element )
{
return element.isPresent( name_ );
}
/* template< typename TElement >
bool operator( const TElement& element )
{
const Data& data = element.getData();
return data.isPresent( name_ );
}*/
};
}
ただし、TElementの特定のメソッドの存在に応じて、異なる演算子()を使用する必要があります。「getData」がある場合はそのデータを確認したいのですが、ない場合は他のアクションを実行します。
SFINAEを知っています。しかし、私にはブーストがありません::プロジェクトで。したがって、テンプレート「has_method」の簡単な実装があるか、他の設計ソリューションを知っています。
この述語を「getData」メソッドでそれらの特定のクラスについて知らないプロジェクトライブラリの1つに配置したいので、特定のタイプを指定して単にオーバーロードすることはできません。
名前空間がない限り、クラス特性を使用したソリューションは適切です。述語Finderは「lib」名前空間にあり、「getData」を持つクラスは「program」名前空間にあります。
ありがとう。