Форум программистов, компьютерный форум CyberForum.ru

Error: ambiguous overload for 'operator<<' (operand types are 'std::ofstream {aka std::basic_ofstream<char>}' - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Подсчитать суммарную стоимость отгрузки http://www.cyberforum.ru/cpp-beginners/thread1310750.html
Журналотгрузки готовой продукции содержит наименование шести видов продукции, количество и цену за единицу продукции, суммарную стоимость о наименование. подсчитать суммарную стоимость, остальные данные ввести с клавиатуры. Вывести на экран все данные журнала.
C++ Remove_copy_if Требуется реализовать свой аналог шаблонной функции remove_copy_if. Из последовательности нужно убрать все четные элементы. Используется контейнер list. Я написал свой код: #include <iostream> #include <list> using std::list; using std::cin; using std::cout; class DivideByTwo { http://www.cyberforum.ru/cpp-beginners/thread1310738.html
Переставить значение элементов заданного одномерного массива, так чтобы все нулевые оказались в конце массива C++
А не нулевые в начале, не нарушая порядок, в котором они были
Вывести на экран график функции, используя символы C++
Используя стандартные символы (.,/*|\-_) вывести на экран график функции в заданном интервале, с задданным шагом. y=xcosx, , п/10;
C++ Свой тип Boolean http://www.cyberforum.ru/cpp-beginners/thread1310708.html
хз зачем я это написал просто скучно было :D enum Boolean_t { False, True }; struct Boolean { Boolean_t value; Boolean() : value(False) {} Boolean(Boolean_t v) : value(v) {}
C++ Вывести на экран таблицу ASCII Помогите пожалуйста с заданием: - Вывести на экран таблицу ASCII (столбцы - три старших двоичных разряда таблицы ASCII, строки - четыре младших разряда). подробнее

Показать сообщение отдельно
TheCalligrapher
С чаем беда...
Эксперт С++
 Аватар для TheCalligrapher
2782 / 1428 / 393
Регистрация: 18.10.2014
Сообщений: 2,622
26.11.2014, 09:20     Error: ambiguous overload for 'operator<<' (operand types are 'std::ofstream {aka std::basic_ofstream<char>}'
Цитата Сообщение от Toshkarik Посмотреть сообщение
А о том, что он является одним из фундаментальных типов для этой платформы.
Я не знаю, что такое "фундаментальные типы для этой платформы" и к чему они тут. Речь идет о том, что список операторов форматированного ввода вывода в спецификации языка содержит только стандартные типы. А на какие-то "фундаментальные типы для этой платформы" стандарту языка глубоко наплевать. Операторов ввода-вывода для остальных - нестандартных - типов спецификацией языка не требуется. Если специального оператора для нестандартного 'size_t' нет, то компилятор будет пытаться использовать какой-то из уже существующих с возникновением ambiguity. Я думаю, что ошибка, отрапортованная в первом сообщении ТС произошла именно из-за этого.

Цитата Сообщение от Toshkarik Посмотреть сообщение
По Вашей логике получается, что в некоторой реализации может отсутсвовать возможность вывода индекса, так как просто может не быть типа необходимого размера при приведении size_t к беззнаковому целому.
Именно так.

Порывшись в С++11 я не увидел нигде требования, чтобы стандартные потоки умели выводить 'size_t'.

Цитата Сообщение от Toshkarik Посмотреть сообщение
Собственно, сам суфикс _t намекает на то, что это typedef некоторого типа ( есть, конечно, шанс, что не стандартного ).
Да, это typedef. Хотя С++11 вроде уже ушел от того, чтобы заявлять об этом явно. Но в спецификации языка ясно же сказано, что это - платформенно-зависимый тип. Известно только, что он должен быть беззнаковым. Но нигде не требуется, чтобы этот тип совпадал с каким-то стандартным типом.

Цитата Сообщение от Toshkarik Посмотреть сообщение
Если Вы вдруг встречали такую реализацию ( может упомянутый VS? но не указана версия ), то буду признателен, если Вы ее назовете.
О какой именно реализации идет речь? Я уже называл реализацию: любая VS с поддержкой x64, но без поддержки 'long long'. Такая VS использовала 'unsigned __int64' в качестве 'size_t'. Это - нестандартный тип. Вот чего я не помню, так это был ли в ней реализованы операторы ввода-вывода для 'unsigned __int64'...

Добавлено через 5 минут
Цитата Сообщение от taras atavin Посмотреть сообщение
Тип hyper.
Нет, именно '__int64'. Тип 'hyper' - это тип из каких-то настолько замшелых и покрытых песками памяти версий Visual Studio, что о нем не помнит даже Интернет. Когда существовал тип 'hyper', 64-битный тип 'size_t' был еще не нужен.

Забудь про 'hyper' навсегда. Это было давно и неправда...
 
Текущее время: 19:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru