Editor/cpp20.cpp (37 lines of code) (raw):

#include <iostream> #include <vector> // Completion for C++20 keywords const char *g() { return "dynamic initialization"; } constexpr const char *f(bool p) { return p ? "constant initializer" : g(); } constinit const char *con = f(true); // Explicit(bool) #define LEVEL_NUM 100 constexpr bool abc(int num) { return (num > LEVEL_NUM); } class Foo { public: explicit(abc(1)) Foo(){ abc(1);} }; // Range-based for loop with initializer void test() { std::vector<int> vec = {1, 3, 5, 7, 9}; for (auto sz = vec.size(); auto item : vec) { std::cout << --sz + item << ' '; } } // Designated initializer struct Person { std::string name{}; std::string surname{}; unsigned age{}; }; struct Employee : public Person { unsigned salary{10000}; }; int main() { Employee emp { {.name="John", .surname="Wick", .age=40}, 5000}; std::cout << emp.name << " " << emp.surname << ": age " << emp.age << ", " << emp.salary << "\n"; return 0; }