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