Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Template syntax for lambdas

Use case

Access template parameter inside lambda.

Explanation

[]<typename T> gives access to T inside lambda.

Code

#include <cstdint>
#include <iostream>
#include <vector>

int main() {
  auto analyze = []<typename T>(const std::vector<T> &data) {
    std::cout << "Element size: " << sizeof(T) << " bytes.\n";
    for (const auto &addr : data) {
      std::cout << "Analyzing 0x" << std::hex << addr << ".\n";
    }
  };

  std::vector<uint64_t> addrs{0x10001000, 0x10002000};
  analyze(addrs);

  return 0;
}

View on GitHub.

Output

$ ./src/c++20/build/template-syntax-for-lambdas
Element size: 8 bytes.
Analyzing 0x10001000.
Analyzing 0x10002000.