Облегчают ли концепции необходимость определения классов в заголовочных файлах? - PullRequest
0 голосов
/ 17 декабря 2018

Бьярн Страуструп упомянул о недостатке необходимости определять шаблоны в заголовочных файлах несколько раз.Пример: https://youtu.be/HddFGPTAmtU

Мой вопрос сейчас, если теперь это решается с помощью функции новых понятий C ++ в C ++ 20?

Я не могу найти что-нибудь относительно этого, и Бьярн сделали ничего больше не говори об этом, афаик.

Ответы [ 2 ]

0 голосов
/ 17 декабря 2018

Понятия об ограничении шаблонов и связанных с шаблоном сущностей.Концепции не учитывают и никогда не пытались устранить ограничение необходимости определять шаблоны в заголовочных файлах.

Модули, с другой стороны, пытается решить эту проблему.Не позволяя вам определять шаблоны в исходных файлах, но добавляя совершенно новый уровень инкапсуляции в язык и, как мы надеемся, в результате сократите время компиляции.Но хотя Концепции уже были добавлены в рабочий проект для C ++ 20, Модули не были.Похоже, что это может сделать C ++ 20, но пока не ясно, будет ли это или нет.Посмотрим.

0 голосов
/ 17 декабря 2018

Концепция сама по себе не устраняет это, но модули C ++ будут.Модули C ++ отделены от концепций: вы можете использовать модули без концепций.Но, учитывая, что Концепции поощряют создание универсального кода, модули будут очень необходимым дополнением.

Вы сможете использовать модули параллельно с #include: вы можете использовать один, другой или оба в соответствии с вашими потребностями.Модули значительно ускорят компиляцию кода, а с модулями вы сможете помещать шаблоны (и концепции) в файл cpp, даже не имея заголовочного файла.

...