A típusszerkezet lényegében megegyezik az Ada 95 típusszerkezetével. Bővebben a következő oldalakon olvashat a témáról:
A diszkrét típusokhoz tartozó oldalak a kövektezők:
A következő oldalak a valós típusokról szólnak:
A mutatók használata veszélyes, ezért az Ada 95 szigorú szabályokat vezetett be a használatukra, amelyek azonban fárasztó programozást eredményeztek túlzott szigorúságuk miatt. A szabályok nem is mindig következetesek, amint a következő példa mutatja, ugyanis minden mutató típus (access type) névvel rendelkezik, kivéve az alprogram paraméterek és a diszkriminánsok mutató típusa.
A szimmetria teljesen hiányzik a nevesített mutató típusok és a mutató paraméterek között. Ha névvel rendelkezik, akkor mindnek van egy null értéke (ami az alapértelmezett, ha a deklarációkor nincs megadva kezdeti érték), a mutató paraméterek esetén viszont a null érték egyáltalán nem megengedett aktuális paraméterként. Sőt, a névvel rendelkező mutató típusoknak egy megszorítása, hogy csak konstans típusokat érjen el, mint
ami azt jelenti, hogy nem tudjuk megváltoztatni azt az értéket, amire mutat. Azonban mutató paraméterek esetén nem mondhatjuk azt, hogy
Az Ada 2005-ben a legtöbb ilyen megszorítás megszűnt, ugyanis a cél a rugalmasság és az egységesség.
Most már megadható, hogy egy mutató típus (szigorú értelemben: altípus) null értékkel rendelkezhet-e. Írhatjuk:
Ezzel garantáljuk, hogy az Acc_Animal nem hivatkozhat egy null állatra.
Ha nem adunk kezdeti értéket a My_Animal változónak, akkor Constraint_Error kivétel lép fel. Azt is írhatjuk, hogy not null access constant.
A null kizárásának előnye akkor látszik, amikor a mutatott objektumra hivatkozunk:
ekkor nem kell ellenőrizni, hogy null pointerre próbálunk-e hivatkozni. Ez a változtatás gyorsabbá teszi a kódot.
A constant és a not null szabadon kombinálható a mutató paramétereknél. Tehát ezeket mind írhatjuk Ada 2005 esetén:
Az all kulcsszó itt nem megengedett, ugyanis a mutató típusok mindig általánosak (mind deklarált, mind dinamikusan létrehozott objektumokra hivatkozhatnak). A változtatások miatt egy kicsit inkompatibilis az új és a régi verzió, ugyanis az Ada 2005-ben lehet egy paraméter null értékű, míg az Ada 95 esetén nem lehetett. Az Ada 2005 már megengedi, hogy ne csak a mutató paraméter legyen névtelen mutató típus, hanem bármelyik a következök közül:
A farmos példát kiegészítjük:
Most már deklarálhatunk egy állatokból álló tömböt:
A tömb tagjai névtelen mutató típusúak. Azonban rekordok is tartalmazhatnak névtelen mutató típusú adattagot. Jellegzetes példa a láncolt lista, mely Ada 95 (és Ada 83) esetén így nézett ki:
Ada 2005-ben viszont már nem kell deklarálni a Cell_Ptr típust, tehát nincs szükség egy nem teljes deklarációra a kör megszakításához (csak teljesen deklarált típusra vagy objektumra állítható mutató). Egyszerűen írhatjuk azt, hogy
Itt a Cell azonosítót a saját deklarációjában lehet használni. Szintén használhatjuk a névtelen mutató típust egy egyszerű változó esetén, mint
Egy példa a névtelen mutató típus függvény visszatérési típusaként történő használatára:
Névtelen mutató típusok átnevezési deklarációkban is használhatóak. A mutatókkal kapcsolatos utolsó fontos változtatás az alprogram típusokra történő hivatkozás, melyet az Ada 95 vezetett be, főleg visszahívó függvények implementálására. Számos más nyelvben azonban fontos felhasználási terület a matematikai alkalmazásoké, amelyre példa az integrálás, a kódban a függvényt paraméterként adjuk át. Az Ada 83 és az Ada 95 erre azt mondja: "használj sablont". Ez azonban eléggé esetlen megoldás, az Ada 2005-ben már van alternatíva. Ada 95-ben írhatjuk:
Az Integrate függvény megkeresi az átadott Fn függvény integrálját a Lo és Hi határok között. Egyszerű esetben ez könnyen működik, ahol a függvény könyvtári szinten definiált. Tehát az
kiszámítására írhatjuk:
ahol az Sqrt függvény az Ada.Numerics.Elementary_Functions csomagban definiált. Azonban ha az integrálandó függvény bonyolultabb, akkor problémákat okoz Ada 95 esetén az alprogramra hivatkozás. Tekintsük a következő példát, amely kiszámítja az xy kifejezést a 0 <= x,y <= 1 négyzet alakú tartományon.
Ez nem megengedett Ada 95-ben, ugyanis a szabályok megtiltják, hogy egy lokális alprogramra hivatkozó mutatót tároljunk egy globális struktúrában. Ezért mind F'Access és G'Access illegális a fenti példában.
Habár a G globálissá tehető, ezáltal a G'Access megengedetté válik, azonban az F függvény továbbra is G-be ágyazott, hogy elérje annak X paraméterét. A megoldás az, hogy az Ada 2005 bevezette az alprogramokra hivatkozó névtelen mutató típust, így az Integrate függvény a következő lesz:
Ezáltal a fenti példa szabályossá válik, és élettartam problémák sem lépnek fel.
Mutatókkal kapcsolatos további dolgokat lásd a következő oldalakon:
A tömb típusok sem változtak az Ada 95-höz képest. A következő oldalakon olvashat ezen típusról:
Az Ada 2005 rekorddal valósítja meg a direkt szorzat típust. Az idevágó oldalak:
Az Ada 2005 az Ada 95-höz hasonlóan támogatja az unió típust:
Ada 2005-ben a halmaz sablon csomag formájában van megvalósítva. A következő oldalon olvashat róla:
A típuskonverzió is hasonlóképpen működik, mint az Ada 95 esetében. A szintaxisról és szabályokról bővebben itt lehet olvasni:
A változók és konstansok sem változtak az Ada 95 óta. Bővebben:
Az Ada 95-höz hasonló, bővebben itt lehet róluk olvasni: