C++ constexpr

  • C++ 11 introduces constexpr.
  • Note:- Use “g++ -std=c++0x filename.cpp” to enable this feature.
  • constexpr allows computations to take place at compile time rather than at run time. This gives performance benefits.
  • constexpr allows the user to guarantee that a function or object constructor is a compile-time constant.
  • constexpr could be specified on a function with some restrictions.
    • Function must have a non void return type.
    • Function body cannot declare variables or define new types.
    • Function body can contain only declarations, null statements and a single return statement.
  • constexpr could be specified on a class constructor for working with user defined types.
    • A constexpr constructor’s function body can contain only declarations and null statements, and cannot declare variables or define types, as with a constexpr function.

Demonstrate simple usage of constexpr

#include <iostream>using namespace std;constexpr int getSize(int x) {return 5 * x;}class MyClass {private:int x;public:constexpr MyClass(int val) : x(val) {}constexpr int getx() { return x; }};int main() {// Using constexpr variableconstexpr int x = 10 + 10;// Using constexpr functionint myArr[getSize(10)];// Using constexpr constructorconstexpr MyClass c(100);cout << c.getx() << endl;return 0;}