Здравствуйте, SaZ, Вы писали:
SaZ>Что-то не получается сделать нужные перегрузки.
А зачем вообще тут делать перегрузки? Они же лишние и пользы не несут. Просто переименуй первый метод Validate и всё получится:
// проверка одного элемента
template< typename T >
bool Validate_1( const Table& table )
{
if ( table.Meta() == T::StaticMeta() )
{
Print<T>( table );
return true;
}
return false;
}
// проверка списка
template< typename T = void, typename ...Tables >
bool Validate( const Table& table )
{
if ( Validate_1<T>( table ) )
return true;
return Validate<Tables...>(table);
}
template<>
bool Validate( const Table& table ) {
return false;
}
Как бы тут сразу видно, что функции для проверки одного элемента и для проверки списка из одного элемента — разные. Ибо список из одного элемента и сам элемент — тоже вроде разные типы.
SaZ> bool operator!=(const MetaInfo& rhs) const
SaZ> {
SaZ> return operator==(rhs);
SaZ> }
SaZ>};
Что-то этот фрагмент тоже выглядит подозрительно ;)