варианты, экзистенциальный полиморфизм в с ++ - PullRequest
1 голос
/ 23 марта 2012

Я провожу исследование систем типов. Для этой работы я исследую использование вариантов, структурного подтипа, универсального полиморфизма и экзистенциального полиморфизма в популярных языках. Функциональные языки, такие как heskell, ocaml предоставляют таких функционеров. Но я хочу, чтобы такие популярные языки, как C ++, обеспечивали вышеуказанную функциональность. Это означает, что C ++ реализовал

  1. Варианты

  2. структурный подтип

  3. универсальный полиморфизм

  4. экзистенциальный полиморфизм.

1 Ответ

2 голосов
/ 23 марта 2012
  1. Союзы можно рассматривать как элементарную форму варианта, но на самом деле они являются более примитивным механизмом наложения памяти (и небезопасного).

  2. В C ++ нет структурной типизации, не говоря уже о подтипах.Все типы являются номинальными.

  3. Шаблоны имеют некоторое поверхностное сходство с универсальным полиморфизмом, но на самом деле они совершенно разные.По сути, они представляют собой прославленные макросы с минимальной проверкой типов или без проверки (как с макросами, проверка и генерация кода происходит после расширения).

  4. В C ++ не существует формы экзистенциальных типов (в Java существует ограниченная форма, а именно подстановочные знаки.

Некоторые из этих функций могут быть в некоторой степени смоделированы с использованием подтипов, но это остается гораздо менее выразительным (или удобным).*

...