[conv.qual] # 7 Expressions [[expr]](./#expr) ## 7.3 Standard conversions [[conv]](conv#qual) ### 7.3.6 Qualification conversions [conv.qual] [1](#1) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/expressions.tex#L755) A [*qualification-decomposition*](#def:qualification-decomposition "7.3.6 Qualification conversions [conv.qual]") of a type T is a sequence ofcvi and Pi such that T is “cv0 P0 cv1 P1 ⋯ cvn−1 Pn−1 cvn U” for n ≥ 0, where each cvi is a set of cv-qualifiers ([[basic.type.qualifier]](basic.type.qualifier "6.9.5 CV-qualifiers")), and each Pi is “pointer to” ([[dcl.ptr]](dcl.ptr "9.3.4.2 Pointers")), “pointer to member of class Ci of type” ([[dcl.mptr]](dcl.mptr "9.3.4.4 Pointers to members")), “array of Ni”, or “array of unknown bound of” ([[dcl.array]](dcl.array "9.3.4.5 Arrays"))[.](#1.sentence-1) If Pi designates an array, the cv-qualifiers cvi+1 on the element type are also taken as the cv-qualifiers cvi of the array[.](#1.sentence-2) [*Example [1](#example-1)*: The type denoted by the [*type-id*](dcl.name#nt:type-id "9.3.2 Type names [dcl.name]") const int ** has three qualification-decompositions, taking U as “int”, as “pointer to const int”, and as “pointer to pointer to const int”[.](#1.sentence-3) — *end example*] [2](#2) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/expressions.tex#L782) Two types T1 and T2 are [*similar*](#def:similar_types "7.3.6 Qualification conversions [conv.qual]") if they have qualification-decompositions with the same n such that corresponding Pi components are either the same or one is “array of Ni” and the other is “array of unknown bound of”, and the types denoted by U are the same[.](#2.sentence-1) [3](#3) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/expressions.tex#L790) The [*qualification-combined type*](#def:type,qualification-combined "7.3.6 Qualification conversions [conv.qual]") of two types T1 and T2 is the type T3 similar to T1 whose qualification-decomposition is such that: - [(3.1)](#3.1) for every i>0, cv3i is the union ofcv1i and cv2i, - [(3.2)](#3.2) if either P1i or P2i is “array of unknown bound of”,P3i is “array of unknown bound of”, otherwise it is P1i, and - [(3.3)](#3.3) if the resulting cv3i is different from cv1i or cv2i, or the resulting P3i is different from P1i or P2i, then const is added to every cv3k for 0