#include <cstddef>
template <class T>
struct istack
{
void push_back(T& value);
std::size_t size() const;
};
int main()
{
typedef istack<size_t> IndexStack;
IndexStack a, stack;
stack.push_back(a.size());
}
Этот код выдает ошибку
In function 'int main()':
13 no matching function for call to 'istack<unsigned int>::push_back(size_t)'
note 5 candidates are: void istack<T>::push_back(T&) [with T = unsigned int]
Обратите внимание, что в нем перечислены кандидаты.(Я подозреваю, что вы не читаете / не публикуете полное сообщение об ошибке.)
Данный кандидат не соответствует вызову, потому что ссылка неконстантна.Временный (например, результат a.size()
) не может быть привязан к неконстантной ссылке.
push_back
должен принимать const T& value