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

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

Сообщение Anonymous »

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

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

#include 
#include 

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

template auto contains(const ContainedType &contained) const -> void {
std::cout  void {
std::cout  AssertionMatcher {
return AssertionMatcher(actual);
}
< /code>
И я называю это таким образом: < /p>
const std::vector container({1, 2, 3});
assertThat(container).contains(2);
Вы можете найти живой пример здесь: https://godbolt.org/z/fxg7a7tvz
образной. Но этот код не будет компилироваться (GCC 14 из онлайн -компилятора): < /p>
: In instantiation of 'AssertionMatcher assertThat(const ActualType&) [with ActualType = std::vector]':
:30:22: required from here
30 | (void) assertThat(container);
| ~~~~~~~~~~^~~~~~~~~~~
:25:12: error: too many initializers for 'AssertionMatcher'
25 | return AssertionMatcher(actual);
| ^~~~~~~~~~~~~~~~~~~~~~~~
< /code>
У меня закончились идеи, как это исправить. У вас есть идеи?

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

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

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

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

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

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