I think I either misunderstand something or something in the standard might be ambiguous. And it's regarding the qualification conversions.
According to the newest draft http://eel.is/c++draft/conv.qual#1
A cv-decomposition of a type T is a sequence of cvi and Pi such that T is “cv0 P0 cv1 P1 ⋯ cvn−1 Pn−1 cvn U” for n>0,
as to my understanding the decomposition of the type T:
using T1 = const char * const **;
might be following
but since it's not said which direction the decomposition should go it (IMO) could be also interpreted the other way:
It will make a difference for the following sentence http://eel.is/c++draft/conv.qual#3.3 :
If the cv1i and cv2i are different, then const is in every cv2k for 0 < k < i.
Since for the first interpretation the sentence will never be fulfilled for the i = 1 or 2, while for the second interpretation the sentence will be true for i = 1 or 2.
My second doubt is, how to interpret the sentence
If the cv1i and cv2i are different, then const is in every cv2k for 0 < k < i.
For i = 0 or 1. For i = 0 or 1 the cv set is empty, thus we can say that all cv for this set have const, because all is none and there is no element in the set, but we can as well say that none element have const, since there is no element in the set.
Is there any place in the standard, that would explain how to exactly understand the cv decomposition and which direction this should go?
The answer was given by @MartinBonner in the comments to the question.
I did not notice that just next to the U there is cvn, meaning that constness decomposition goes from the most outer to the most inner pointer.
(The cv with the biggest index will be closest to the type U).