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

Выбор шаблонного варианта для аргумента-массива - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Поток не сигнализирует событием о своем окончании http://www.cyberforum.ru/cpp/thread1272738.html
Всем привет, нужна помощь задача такая. Есть метод у меня (mnThread) который постоянно поставляет данные, процедура (get_data) эти данные получает. Как только данные получены я устанавливаю событие и по идее должен перейти к другому методу по обработке данных.. Но что-то идёт не так.. максимум попадаю я в метод обработки (process) только один раз, почему пока не понимаю... ниже код static int...
C++ Не могу понять как исправить ошибку #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; const int n = 10; class Library http://www.cyberforum.ru/cpp/thread1272081.html
Помогите построить факториал в MFC C++
Помогите построить факториал в MFC. Целый день капаюсь в уроках, но так ничего не вышло Добавлено через 2 часа 59 минут делаю по примеру http://kvodo.ru/visual-c-mfc-osnovnyie-printsipyi-razrabotki.html и останавливась там где код функции ввести. Когда его ввожу и запускаю, кнопка все равно пишет "бла бла бла" а не результат
C++ Как "засунуть" классы в .dll ?
Добрый вечер! У меня имеется классовая иерархия, базовый класс сотрудник, наследники программист, экономист, электронщик и т.п. Сделал базу данных с помощью (vector.h) , и в main заполняю БД, и потом работаю с ней ( вывожу на экран нужные поля, сортирую так, сортирую эдак ). По заданию мне надо "Описание классов реализовать в Classes.dll, непосредственно сам список в Base.dll. Вызовы в...
C++ Информация по Button, Panel, Label, TextBox в VS2010 http://www.cyberforum.ru/cpp/thread1270298.html
Среда visual c++ 2010 для работы с графическим интерфейсом. Компоненты среды программирования(свойства,события,методы,пример использования) Button, Panel, Label, TextBox. Заранее спасибо за ответ.
C++ Уничтожение файлов и папок, без возможности восстановления Здравствуйте! Собственно это моё задание "Написать windows-приложение для гарантированного удаления файлов(каталогов) без возможности восстановления специализированным ПО". Нашла на википедии информацию по алгоритмам уничтожения: Википедия: "Уничтожение данных" 1.Вопрос собственно в реализации: с чего начать. 2.И может есть у кого какая-нибудь ещё полезная литература на эту тему? 3.Так же... подробнее

Показать сообщение отдельно
DrOffset
6922 / 4115 / 942
Регистрация: 30.01.2014
Сообщений: 6,910
11.10.2014, 23:15     Выбор шаблонного варианта для аргумента-массива
IGPIGP, у тебя в самом начале рассуждений ошибка, которая и завела тебя в тупик.
Вот здесь:
Цитата Сообщение от IGPIGP Посмотреть сообщение
то есть снова к T*, ссылка на массив и ссылка на тип разные звери и преобразование к ссылке int& не будeт и тут
никто не утверждал, что будет преобразование к ссылке на тип. Я писал:
Цитата Сообщение от DrOffset Посмотреть сообщение
T разрешится в ссылку на массив
Т.е. при использовании варианта
C++
1
2
template <typename T>
void foo(T & t)
с аргументом a, где а объявлен как int a[100], то T будет int[100], итого получим ссылку на массив, при подстановке T = int[100] аргумент будет выглядеть как int (&)[100].

Цитата Сообщение от Tulosba Посмотреть сообщение
Не очень понял, почему преобразование к ссылке (не важно, константной или нет) приоритетнее преобразования к константному указателю.
Скопирую ответ из ЛС:
Цитата Сообщение от DrOffset Посмотреть сообщение
Преобразование к ссылке рассматривается как отсутсвие (identity) преобразования (13.3.3.1.4) в нашем случае.
Преобразование к указателю одного ранга с отсутствием преобразования (демонстрация неоднозначности в моем посте)
А вот константность добавляет Qualification conversion, которая не смотря опять же на одинаковый ранг, разрешается исходя из фактической cv-квалификации аргумента (см. 13.3.3.2/3). Если есть перегрузка, где не требуется преобразование неконст->конст то будет выбрана именно она.
Цитата Сообщение от Tulosba Посмотреть сообщение
И убрав при этом версию с указателем вовсе?
Да, придется убрать. Впрочем, можно не обращать внимания на ту часть моего ответа, где я предлагал способ лечения этого, т.к. я слегка торопился и скомкал эту часть, да и к теме это напрямую не относится - все и так знают как это лечить.

Добавлено через 6 минут
Цитата Сообщение от IGPIGP Посмотреть сообщение
Почему имя массива может подойти там где объявлена ссылка на тип и ожидается то что приводится к T?
Она подойдет если нет других более подходящих вариантов. Об этом и была речь. В варианте Tulosba более подходящей является перегрузка с указателем. Добавив const к ней мы сделали более подходящим вариант со ссылкой. Про детали я уже выше написал.

Добавлено через 12 минут
Вообще вся эта кухня на самом деле довольно сложна.
Но можно использовать небольшие эмпирические правила:
1) Всегда применяется наиболее специализированный шаблон.
2) Перегрузка разрешается всегда в пользу наименьшего количества преобразований (или их отсутствия).
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru