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

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

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

Показать сообщение отдельно
DrOffset
7351 / 4451 / 1009
Регистрация: 30.01.2014
Сообщений: 7,293
12.10.2014, 10:54
Цитата Сообщение от IGPIGP Посмотреть сообщение
почему они не дерутся, в то время когда одновременно определённые T* и T (&t)[N] не переносят вызов по имени массива?
В принципе ответ на этот вопрос есть в моих предыдущих постах.
Вариант T & слишком общий, вместо T здесь может быть что угодно, не только массив.
Вариант с T (&t)[N] - такой же как как вариант с T * они одно значно квалифицируют сущность аргумента. Логика на пальцах:
Заменив T на тип (простая замена T = int), мы можем сразу сказать какой у нас аргумент.
В варианте с T & недостаточно заменить T = int, нужно еще вывести N. Это сложнее и компилятор отбрасывает эту перегрузку.
Чтобы понять этот механизм посмотри вот сюда. Представь, что эти шаги выполняются при построении AST компилятором. Чем больше нужно прыгать (там в примере 7 раз), тем сложнее вывод. Таким образом компиляторо способен (и делает) проводить разрешение перегрузки только между наиболее специализированными шабонами, наибольшая специализация определяется из сложности вывода типа, чем больше информации указано в помощь выводу, тем проще. Поэтому, кстати, нужно брать ссылку в скобочки в определении ссылки на массив, для того, чтобы парсер смотрел ее сразу за декларатором аргумента.

Добавлено через 8 минут
Цитата Сообщение от IGPIGP Посмотреть сообщение
Ссылка на массив имеет отдельный синтаксис и typedef ничего не объясняет.
Синтаксис определения типа в С++ один:
Цитата Сообщение от DrOffset Посмотреть сообщение
prefix Name suffix, где префикс и суффикс — какие-то строки, вместе образующие правильное выражение.
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru