W C++11 powyższy kod można przepisać następująco:
constexpr int GetFive() {return 5;}
int someValues[GetFive() + 5]; //stwórz tablicę 10 elementów typu ''int''. Poprawne w C++11
To pozwala kompilatorowi rozpoznać i zweryfikować, że GetFive jest stałą podczas kompilacji.
Zastosowanie constexpr do funkcji narzuca bardzo ścisłe ograniczenia na to, co funkcja może robić:
Funkcja musi posiadać typ zwracany różny od void, Zawartość funkcji musi być w postaci "return wyrażenie", wyrażenie musi być stałym wyrażeniem po zastąpieniu argumentu. To stałe wyrażenie może albo wywołać inne funkcje tylko wtedy, gdy te funkcje też są zadeklarowane ze słowem kluczowym constexpr albo używać inne stałe wyrażenia, Wszystkie formy rekursji w stałych wyrażeniach są zabronione, Funkcja zadeklarowana ze słowem kluczowym constexpr nie może być wywoływana, dopóki nie będzie zdefiniowana w swojej jednostce translacyjnej.
Zmienne także mogą być zdefiniowane jako stałowyrażeniowe:
constexpr double silaGrawitacji = 9.8; constexpr double grawitacjaKsiezyca = silaGrawitacji / 6;
Zmienne typu constexpr (stałowyrażeniowe) są niejawnie typu const.