Включающий тип, который вы интроспектируете с TTI, должен быть действительным в точке, в которой вы вызываете макрометафункцию. Если в этот момент он не является действительным, вы получите ошибку компилятора.
Если прилагаемый тип является действительным типом, но не является типом класса, вы не получите ошибку компилятора, но результат интроспекции всегда вернется «ложным» или, в случае метафункции, генерируемой BOOST_TTI_MEMBER_TYPE, всегда вернет тип маркера.
При использовании макрометафункций, генерируемых BOOST_TTI_HAS_MEMBER_DATA и BOOST_TTI_HAS_MEMBER_FUNCTION Первый параметр шаблона может быть закрытым типом или указателем на данные члена или функцию члена соответственно. В каждом из этих случаев TTI может различать две возможности, и только если первый параметр шаблона является закрытым типом, еще раз, если это действительный тип, но не тип класса, вы не получите ошибку компилятора, но результат интроспекции вернется «ложным».