Ошибка компиляции метода класса шаблонов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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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