When do Allocator::pointer and Allocator::value_type* differ?

Viewed 105

I have a doubt regarding a question, in particular about this answer.
There is a part that is left as an exercise for the reader (it is not a problem for itself), in particular Jonathan Wakely (the author of the answer) said that:

This code asserts that Allocator::pointer is Allocator::value_type*

That is expressed in code as:

static_assert(std::is_same<typename AT::pointer, typename AT::value_type*>::value, "Allocator doesn't use fancy pointers");

At the time, I got the answer as is and that's all.
When I was reading it again after a while, I found myself asking aloud: fancy pointers?
From here (documentation of allocator_traits), pointer is defined as:

Alloc::pointer if present, otherwise value_type*

The question thus arose: what's a realistic case in which Allocator::pointer and Allocator::value_type* actually differ?

3 Answers
Related