Table of Contents

<initializer_list>

<initializer_list> provides std::initializer_list<T>, which lets you write constructors and functions that accept brace-enclosed lists like std::vector{1, 2, 3}. It's a lightweight, read-only view over a compiler-managed array.

Use it to enable uniform initialization syntax on your own types.

Example

This example defines a custom container with a constructor accepting an initializer list, enabling brace-enclosed initialization.

// compile: g++ -std=c++11 -o initializerlistexample initializerlistexample.cpp
// run: ./initializerlistexample
// description: custom constructor accepting initializer_list
 
#include <initializer_list>
#include <iostream>
 
class MyContainer {
    int sum = 0;
public:
    MyContainer(std::initializer_list<int> init) {
        for (int x : init) sum += x;
    }
    int total() const { return sum; }
};
 
int main() {
    MyContainer c{1, 2, 3, 4};
    std::cout << "sum: " << c.total() << "\n";
 
    return 0;
}