我需要爲stl算法設計謂詞,例如find_if,count_if。stl算法的C++「智能」謂詞
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。但是我沒有boost ::關於這個項目。 因此,無論是模板「has_method」的一些簡單實現,還是您知道其他一些設計解決方案。
我不能指出特定的類型和簡單的重載,因爲我想把這個謂詞放到項目庫中,它不知道那些具有「getData」方法的特定類。
只要沒有命名空間,類類特徵的解決方案就很好。 「lib」命名空間中的Predicate Finder和「getData」中的類位於「program」命名空間中。
謝謝。
你可以添加一個示例用法來說明行爲如何改變? – dirkgently 2009-03-01 17:56:49