Diferencia entre la cadena literal y la matriz constexpr de char

Me he estado preguntando si hay alguna diferencia entre lo que señalaptrToArray yptrToLiteral en el siguiente ejemplo:

constexpr char constExprArray[] = "hello";
const char* ptrToArray = constExprArray;

const char* ptrToLiteral = "hello";
¿Entiendo queconstExprArray y los dos"hello" los literales son todos los valores constantes de tiempo de compilación correctos?Si es así, ¿hay alguna diferencia en cómo se almacenan en el archivo ejecutable, o es puramente la implementación del compilador o la plataforma específica?¿Son tratados de manera diferente en tiempo de ejecución detrás de escena?¿Algo más que saber?