Let's see :

std::pair == std :: pair -- GOOD
std::pair == std :: pair -- GOOD
std:air == std :: pair -- BAD
HTML Code:
std::pair == std :: pair -- GOOD
PHP Code:
std::pair == std :: pair -- GOOD 
std :: pair != std:air -- BAD

So, after my last suggestion; you removed the use of smileys inside all kinds of code tags. But the issue is not fully resolved.

Suggestion :: I don't know if this is possible but can we restrict text -> smiley conversion with the following criteria :
(*) The text say ": p" (I added <space> to disable auto-conversion to smiley), should only be converted to "" IF, it is followed by a blank space so as to confirm that it's not the part of a word.

So, ': p' (without space in between) gets converted to , but std :: pair (without spaces) does not get converted ('cuz the smiley is not followed by a space after it).