Я объявил глобальный оператор сдвига, но по какой-то причине компилятор не может вычитать тип.Устранение ошибки
template<class T, size_t N>
std::istream& operator >>(std::istream& stream, std::array<T, N>& array);
Вместо этого он пытается использовать перегрузку с std::istream&&
в качестве первого аргумента.
EDIT: Я призываю через
void myns::subns::Object::Func(std::istream& stream) {
stream >> array;
}
где массив является std::array<size_t, 2>
. Действительно, когда я пытаюсь его изоляции компилирует - но в моем коде НКУ (4,7) жалуется error: cannot bind ‘std::istream {aka std::basic_istream<char>}’ lvalue to ‘std::basic_istream<char>&&’
Может кто-нибудь объяснить мне, почему вычет не работает или как я могу заставить вызвать перегрузку функции?
Как вы _try_, чтобы вызвать его? –
Работает для меня: http://ideone.com/n2D5o – mfontanini
@mfontanini Спасибо. Я не понимаю, почему он работает изолированно. – abergmeier