Ошибка компиляции метода класса шаблоновC++

Программы на C++. Форум разработчиков
Anonymous
Ошибка компиляции метода класса шаблонов

Сообщение Anonymous »

Я создаю свою собственную тестовую структуру в C ++, чтобы узнать больше об этом языке (и вау, как много я узнал), но я только что достиг критической точки-> Я пытаюсь специализироваться на своем содержит , чтобы сбой напрямую, когда это не контейнер, и иначе выполняет настоящий чек.

Код: Выделить всё

template class AssertionMatcher final {
public:
explicit AssertionMatcher(const ActualType &actual): _actual(std::move(actual)) {}

template auto contains(const ContainedType &contained) const -> void {
Assertion::_fail("Cannot check that a '" + getTypeName() + "' contains something.");
}
}

template
class AssertionMatcher {
public:
auto contains(const ContainedType &contained) const -> void {
Assertion::success(); // code testing the vector
}
};

template [[nodiscard]] auto assertThat(const ActualType &actual) -> AssertionMatcher {
return AssertionMatcher(actual);
}
< /code>
И я называю это таким образом: < /p>
const std::vector container({1, 2, 3});
assertThat(container).contains(2);
Я посмотрел на многие другие вопросы здесь, чтобы найти, как достичь этой + эта страница (https://en.cppreference.com/w/cpp/langu ... ation.html). Но этот код не будет компилироваться: < /p>
error: too many initializers for ‘crossedfingers::AssertionMatcher’
38 | return AssertionMatcher(actual);
| ^~~~~~~~~~~~~~~~~~~~~~~~
< /code>
У меня закончились идеи, как это исправить. У вас есть идеи?


Подробнее здесь: https://stackoverflow.com/questions/796 ... tion-error

Вернуться в «C++»