#include <iostream>
#include <vector>
constexpr unsigned long long factorial(unsigned long long n) {
return (n <= 1 ? 1 : n*factorial(n-1));
}
int main() {
// universal initialization
std::vector<int> v{1,2,3,4,5,6};
// move semantics
std::vector<int> v2(std::move(v));
// for each loop and auto
for(auto e: v2) {
std::cout << e << '\n';
}
// static assert makes assertions at compile-time
static_assert(factorial(5) == 120, "factorial(5) should be 120.");
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKY29uc3RleHByIHVuc2lnbmVkIGxvbmcgbG9uZyBmYWN0b3JpYWwodW5zaWduZWQgbG9uZyBsb25nIG4pIHsKCXJldHVybiAobiA8PSAxID8gMSA6IG4qZmFjdG9yaWFsKG4tMSkpOwp9CgppbnQgbWFpbigpIHsKCQoJLy8gdW5pdmVyc2FsIGluaXRpYWxpemF0aW9uCglzdGQ6OnZlY3RvcjxpbnQ+IHZ7MSwyLDMsNCw1LDZ9OyAKCQoJLy8gbW92ZSBzZW1hbnRpY3MKCXN0ZDo6dmVjdG9yPGludD4gdjIoc3RkOjptb3ZlKHYpKTsKCQoJLy8gZm9yIGVhY2ggbG9vcCBhbmQgYXV0bwoJZm9yKGF1dG8gZTogdjIpIHsKCQlzdGQ6OmNvdXQgPDwgZSA8PCAnXG4nOwoJfQoJCgkvLyBzdGF0aWMgYXNzZXJ0IG1ha2VzIGFzc2VydGlvbnMgYXQgY29tcGlsZS10aW1lCglzdGF0aWNfYXNzZXJ0KGZhY3RvcmlhbCg1KSA9PSAxMjAsICJmYWN0b3JpYWwoNSkgc2hvdWxkIGJlIDEyMC4iKTsKfQ==