Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

task_34.7.1

Описание проекта

Этот проект демонстрирует использование концептов (concepts) в C++20 на примере создания и применения концепта ComplexConcept, который накладывает следующие ограничения на тип:

Наличие у типа T метода hash(), который возвращает тип, конвертируемый в long Наличие у типа T метода toString(), который возвращает std::string Отсутствие у типа T виртуального деструктора

Структура проекта

ComplexConcept.h - заголовочный файл с объявлением концепта и классов ComplexConcept.cpp - реализация методов классов main.cpp - демонстрационный пример использования концепта CMakeLists.txt - файл сборки CMake README.md - документация проекта

Описание кода

ComplexConcept.h Содержит объявление концепта ComplexConcept с использованием ключевого слова requires. В файле также объявляются классы ValidType и InvalidType для демонстрации. ComplexConcept.cpp Содержит реализацию методов классов ValidType и InvalidType. main.cpp Демонстрирует использование концепта ComplexConcept. В данном файле определена функция process, которая принимает только объекты типов, удовлетворяющих концепту. Также реализована функция testType для проверки соответствия типа требованиям концепта. Ключевые особенности

Использование C++20 concepts - современный способ наложения ограничений на шаблонные параметры Checks для типов - наглядная демонстрация проверок требований для каждого типа Статическая проверка на этапе компиляции - концепты позволяют получать более понятные сообщения об ошибках при нарушении ограничений

Проект демонстрирует следующие возможности C++20:

Концепты (concepts) и их использование с шаблонными функциями Трейты типов (type traits) для проверки свойств типов Использование C++20 в проектах CMake

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages