Re: Помогите с вариадиками
От: watchmaker  
Дата: 09.01.18 13:55
Оценка: 4 (1) +1
Здравствуйте, 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>};
Что-то этот фрагмент тоже выглядит подозрительно ;)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.