|
14 / 14 / 8
Регистрация: 26.09.2007
Сообщений: 919
|
||||||||||||||||
C++17 typename в параметре шаблона шаблона19.09.2024, 13:47. Показов 2621. Ответов 15
Метки нет (Все метки)
Изучаю С++17 по документу
https://ru.cppreference.com/w/... support/17 третий пункт typename в параметре шаблона шаблона описан здесь https://www.open-std.org/jtc1/... n4051.html Пример из описания:
Я так понял что такой синтаксис позволяет различать где шаблоны для классов, где шаблоны для простых типов например int и если шаблон для класса то не может быть использован например простой тип int, float тп. Кто может уточнить информацию? Например понятно следующее:
А что здесь ниже, какой тип используется не ясно:
0
|
||||||||||||||||
| 19.09.2024, 13:47 | |
|
Ответы с готовыми решениями:
15
Gtest, доступ к элементам базового класса-шаблона без указания параметров шаблона. баг или фича? Наследуемый класс в параметре шаблона
|
|
87 / 87 / 18
Регистрация: 11.06.2018
Сообщений: 302
|
||||
| 19.09.2024, 19:29 | ||||
|
T - это параметр шаблона A. Никакой структуры тут нет. Есть шаблон структуры. Сама структура появится только после инстанцирования. Это всё как бы инфа из С++03. Наверное надо сначала С++03 уверенно освоить, прежде чем на С++17 замахиваться?
1
|
||||
|
Вездепух
12943 / 6810 / 1821
Регистрация: 18.10.2014
Сообщений: 17,234
|
||
| 20.09.2024, 06:10 | ||
classtemplate <template < что-то > class X> class SomeClass { что-то };а теперь можно использовать ключевое слово typenametemplate <template < что-то > typename X> class SomeClass { что-то };Изменение чисто косметическое, оба варианта эквивалентны.
2
|
||
|
фрилансер
6462 / 5670 / 1131
Регистрация: 11.10.2019
Сообщений: 15,096
|
|
| 20.09.2024, 06:17 | |
|
0
|
|
|
Вездепух
12943 / 6810 / 1821
Регистрация: 18.10.2014
Сообщений: 17,234
|
||
| 20.09.2024, 06:18 | ||
|
Просто раньше в С++ было так, что шаблон типа - это обязательно класс. А вот с С++11 появился "шаблонный typedef" (через using), благодаря которому шаблон типа - это уже не обязательно класс. В таких условиях требование использовать именно class при объявлении шаблонных-шаблонных параметров выглядит странно и лишь сбивает с толку.
0
|
||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|||
| 20.09.2024, 21:59 | |||
|
С++03 устарел давно (динозавры вымерли позже), начинать нужно либо с 14 либо с 17 стандарта. Добавлено через 4 минуты А вообще, что бы меньше было тем про шаблоны : https://cppinsights.io
0
|
|||
|
Вездепух
12943 / 6810 / 1821
Регистрация: 18.10.2014
Сообщений: 17,234
|
||
| 20.09.2024, 22:12 | ||
|
Это не скомпилировалось бы до того изменения, о котором идет речь в вопросе. И это прекрасно скомпилируется в C++17 и выше.
0
|
||
|
87 / 87 / 18
Регистрация: 11.06.2018
Сообщений: 302
|
||
| 20.09.2024, 22:16 | ||
|
Так понятнее?
0
|
||
|
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
|
|||
| 20.09.2024, 22:50 | |||
|
Пора отписываться от этого ущербного ТСа. Добавлено через 31 минуту
0
|
|||
|
1673 / 501 / 107
Регистрация: 17.05.2015
Сообщений: 1,518
|
||||
| 23.09.2024, 06:40 | ||||
|
Напоминаю контекст: речь идет о коде: С++ не позволяет создавать объекты неполных типов.
0
|
||||
|
Вездепух
12943 / 6810 / 1821
Регистрация: 18.10.2014
Сообщений: 17,234
|
||
| 23.09.2024, 20:34 | ||
|
Код, процитированный выше, вместе с комментариями про "ok", "cannot" и т.п. скопирован без изменений напрямую из предложения n4051 на open-std.org. Я думаю, всем прекрасно понятно, что имел в виду автор этого предложения под этим кодом и этими комментариями. Понятно то, что речь совсем не шла о буквальной компилируемости этого огрызка кода, а лишь об условной корректности приведенных объявлений в рамках ряда очевидных допущений. В частности, понятно то, что вопросы полноты типов в определениях объектов к теме предложения n4051 никакого отношения не имеют. Отсюда проистекает и мой вопрос: что значит "не скомпилируется"? Вы не согласны с выводами автора предложения по ссылке даже в рамках сделанных им условностей и допущений? Или вы [зачем-то] буквально пытались скармливать этот огрызок кода компилятору?
0
|
||
|
1673 / 501 / 107
Регистрация: 17.05.2015
Сообщений: 1,518
|
|||||||
| 23.09.2024, 23:03 | |||||||
|
Домыслы не интересуют. Человек просто констатировал очевидный факт: Это не имеет никакого отношения к тому факту, что SmallEvil справедливо заметил, что код некомпилябельный, а вы почему то не осилили, что означает словосочетание "не скомпилируется". Мне итак очевидно, что огрызок кода некомпилябельный. А вот вам не помешало бы. Что бы у вас вот таких вопросов не возникало:
0
|
|||||||
|
1064 / 985 / 153
Регистрация: 10.08.2015
Сообщений: 5,377
|
||
| 25.09.2024, 11:31 | ||
|
Даже в учебных целях максимум что от него можно получить - это успешная компиляция... Опытные программисты не рекомендуют использовать шаблоны. Однако я считаю, что в узком круге задач они все же применимы лишь для создания контейнеров. Не нужно изучать по документам. нужен учебник (а такого не существует в природе для с++), в котором последовательно, на наглядных практических примерах рассмотрены все аспекты языка, библиотек, компилятора, IDE, структур данных и методов их обработки. и это только вступление.
0
|
||
|
фрилансер
6462 / 5670 / 1131
Регистрация: 11.10.2019
Сообщений: 15,096
|
|
| 25.09.2024, 21:04 | |
|
0
|
|
|
870 / 529 / 149
Регистрация: 03.02.2013
Сообщений: 1,859
|
|
| 26.09.2024, 02:10 | |
|
0
|
|
|
фрилансер
6462 / 5670 / 1131
Регистрация: 11.10.2019
Сообщений: 15,096
|
|
| 26.09.2024, 08:05 | |
|
0
|
|
| 26.09.2024, 08:05 | |
|
Помогаю со студенческими работами здесь
16
Определение метода-шаблона за пределами шаблона класса
получение ссылки на функцию из класса шаблона и передача ее как параметр шаблона Ссылка на объект шаблона как поле шаблона класса) Редактирование шаблона сайта и шаблона письма Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|