| Hosted by CoCalc | Download
Kernel: C++17

C++ 17 in CoCalc / Ubuntu 20.04

Lambda-capture not only by reference, but also by value!

struct MyObj { int value{ 123 }; auto getValueCopy() { return [*this] { return value; }; } auto getValueRef() { return [this] { return value; }; } };
MyObj mo; auto valueCopy = mo.getValueCopy(); auto valueRef = mo.getValueRef();
mo.value = 31; valueCopy(); // 123
123
valueRef(); // 321
31

Range-based for loop

std::array<int, 5> a{ 1, 2, 3, 4, 5 }; for (int& x : a) { x = 2*x + 1; }
#include <iostream>
for(auto const& x: a) { std::cout << x << " "; }
3 5 7 9 11

for loop

int i; for (i = 0; i < 10; i++) { std::cout << "i=" << i << "\n"; } int x = i; std::cout << x;
i=0 i=1 i=2 i=3 i=4 i=5 i=6 i=7 i=8 i=9 10

cin text input

int y; std::cin >> y; 2 * y + 1
17