Скажем, мы создаем повторную реализацию C, с той лишь разницей, что эти типы выводятся. Классы хранения и модификаторы все равно должны быть (const, static, ограничение и т.д.), и ограничиваем наше внимание одиночным файл C на данный момент. Это можно сделать? Каковы основные препятствия?
Некоторые мысли о том, что может вызвать проблемы с типом вывода
- структуры с тем же именем поля должны быть устранены вручную.
- тот же для союзов с одинаковыми именами полей
-
возможно, потребуется "из" аннотации, что-то вроде
var i = (uint32_t -> uint64_t) *some_pointer;
Эти проблемы потребуют немного аннотации пользователя, но не должны быть слишком обременительно, есть ли какая-то проблема с убийцей, которая выводит эту идею из воды?
Изменить: Чтобы уточнить, я не говорю о добавлении дженериков или параметрического полиморфизма, просто введите вывод для существующих типов C.
Изменить 2014: Любой, кто интересуется этой концепцией, может захотеть заглянуть в Rust