#include <string>
int main()
{
char cstr[20] = "hello" ;
int i = cstr[0] ; // implicit conversion from char to int
char* ptr = cstr ; // (implicit) array to pointer conversion
// 'array of 20 char' to 'pointer to char'
constchar* cptr = ptr ; // (implicit) qualification conversion
// 'pointer to char' to 'pointer to const char'
// a standard conversion may involve an implicit conversion sequence
constchar* cptr2 = cstr ; // 1. array to pointer conversion
// 2. qualification conversion
// an implicit conversion may combine a standard conversion and a user-defined conversion
std::string str = cstr ; // standard conversion: 1. array to pointer conversion 2. qualification conversion
// user-defined conversion: const char* to std::string (via the converting constructor)
// an implicit conversion may be contextual
if(cptr) ; // cptr used in a boolean context; implicit conversion from pointer to bool
}