According to a.o. this accepted answer, Dijkstra's algorithm is a special case of the A* algorithm.
In logic, especially as applied in mathematics, concept A is a special case or specialization of concept B precisely if every instance of A is also an instance of B but not vice versa, or equivalently, if B is a generalization of A.
There are, however, cases that produce different results for A* with a constant zero heuristic when compared to Dijktra's algorithm.
One of these is their behaviour when the graph contains negative cycles: while A*'s closed set handling completely avoids such cycles, Dijkstra's follows negative cycles infinite times before proceeding.
Another edge case where their results may differ, this time even with an admissible heuristic, is when A* underestimates the cost of the final edge in a graph. Given a graph like this:
Most A* implementations, including the psuedo-code example at wikipedia, would incorrectly assume A-B-D to be the shortest path if the heuristic function for rates B to D below 2, while Dijkstra correctly yields A-C-D.
Can Dijkstra's algorithm still be viewed as special case for A*, given the above?