class storage
{
  T a[N];
public:
  T* get(); // a の中のある要素を指すポインタを返す
  bool contains( T const* p ) const; // p が a の中の要素を指しているかどうか判定
};
bool storage::contains( T const* p ) const
{
  return ( p != 0 ) && ( &a[0] <= p ) && ( p <= &a[N] );
}

↑この storage::contains のような判定は有効ですか?
「同じ配列内のポインタ以外の比較は無効」という話を見かけたので心配になりました。