Ответ 1
С++ 03 5.10/1 [expr.eq]:
Операторы == (равно) и a = = (не равные) имеют одинаковые семантические ограничения, преобразования и тип результата в качестве реляционных операторов, за исключением их более низкого приоритета и результата истины. [Примечание: a < б == c < d истинно, когда a < b и c < d имеют одинаковое значение истинности. ] Указатели на объекты или функции того же типа (после конверсий указателей) можно сравнить для равенства. Два указателя одного и того же тип сравнивается равным тогда и только тогда, когда оба они равны нулю, оба указывают на одна и та же функция или оба представляют один и тот же адрес (3.9.2).
Акцент на мой.