▁requires ▁that ▁all ▁gener ics ▁be ▁instanti ated ▁explicitly . ▁These ▁rules ▁have ▁several ▁consequences : ▁▁ ▁the ▁compiler ▁can ▁implement ▁shared ▁gener ics : ▁the ▁object ▁code ▁for ▁a ▁generic ▁unit ▁can ▁be ▁shared ▁between ▁all ▁instances ▁( unless ▁the ▁programmer ▁requests ▁in lin ing ▁of ▁sub program s , ▁of ▁course ). ▁As ▁further ▁consequences : ▁ ▁there ▁is ▁no ▁possibility ▁of ▁code ▁b loat ▁( code ▁b loat ▁is ▁common ▁in ▁C ++ ▁and ▁requires ▁special ▁care , ▁as ▁explained ▁below ). ▁ ▁it ▁is ▁possible ▁to ▁instantiate ▁gener ics ▁at ▁run - time , ▁as ▁well ▁as ▁at ▁compile ▁time , ▁since ▁no ▁new ▁object ▁code ▁is ▁required ▁for ▁a ▁new ▁instance . ▁ ▁actual ▁objects ▁corresponding ▁to ▁a ▁generic ▁formal ▁object ▁are ▁always ▁considered ▁to ▁be ▁non - static ▁inside ▁the ▁generic ; ▁see ▁Gener ic ▁formal ▁objects ▁in ▁the ▁Wik ib ook ▁for ▁details ▁and ▁consequences . ▁ ▁all ▁instances ▁of ▁a ▁generic ▁being ▁exactly ▁the ▁same , ▁it ▁is ▁easier ▁to ▁review ▁and ▁understand ▁programs ▁written ▁by ▁others ; ▁there ▁are ▁no ▁" special ▁cases " ▁to ▁take ▁into ▁account . ▁ ▁all ▁instanti ations ▁being ▁explicit , ▁there ▁are ▁no ▁hidden ▁instanti ations ▁that ▁might ▁make ▁it ▁difficult ▁to ▁understand ▁the ▁program . ▁ ▁Ada ▁does ▁not ▁permit ▁" template ▁met ap ro gram ming ", ▁because ▁it ▁does ▁not ▁allow ▁special is ations . ▁ ▁Tem plates ▁in ▁C ++ ▁ ▁C ++ ▁uses ▁templates ▁to ▁enable ▁generic ▁programming ▁techniques . ▁The ▁C ++