- #include <iostream> 
- #include <typeinfo> 
- using namespace std; 
-   
- template<size_t N> 
- void funcArrayRef(int(&ar)[N]) 
- { 
- 	cout << "\nfuncArrayRef:\n"; 
- 	cout << typeid(ar).name() << " " << sizeof(ar) << " byte\n"; 
- 	cout << "ar[4] " << ar[4] << endl; 
- } 
-   
- void funcArray(int(ar)[]) 
- { 
- 	cout << "\nfuncArray:\n"; 
- 	cout << typeid(ar).name() << " " << sizeof(ar) << " byte\n"; 
- 	cout << "ar[4] " << ar[4] << endl; 
- } 
-   
- void funcPointer(int(*ar)) 
- { 
- 	cout << "\nfuncPointer:\n"; 
- 	cout << typeid(ar).name() << " " << sizeof(ar) << " byte\n"; 
- 	cout << "ar[4] " << ar[4] << endl; 
- } 
-   
- int main() { 
- 	int x[] = {1,2,3,4,5}; 
- 	cout << "main:\n"; 
- 	cout << typeid(x).name() << " " << sizeof(x) << " byte\n"; 
- 	funcArray(x); 
- 	funcPointer(x); 
- 	funcArrayRef(x); 
- 	return 0; 
- } 
				I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHlwZWluZm8+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0ZW1wbGF0ZTxzaXplX3QgTj4Kdm9pZCBmdW5jQXJyYXlSZWYoaW50KCZhcilbTl0pCnsKCWNvdXQgPDwgIlxuZnVuY0FycmF5UmVmOlxuIjsKCWNvdXQgPDwgdHlwZWlkKGFyKS5uYW1lKCkgPDwgIiAiIDw8IHNpemVvZihhcikgPDwgIiBieXRlXG4iOwoJY291dCA8PCAiYXJbNF0gIiA8PCBhcls0XSA8PCBlbmRsOwp9Cgp2b2lkIGZ1bmNBcnJheShpbnQoYXIpW10pCnsKCWNvdXQgPDwgIlxuZnVuY0FycmF5OlxuIjsKCWNvdXQgPDwgdHlwZWlkKGFyKS5uYW1lKCkgPDwgIiAiIDw8IHNpemVvZihhcikgPDwgIiBieXRlXG4iOwoJY291dCA8PCAiYXJbNF0gIiA8PCBhcls0XSA8PCBlbmRsOwp9Cgp2b2lkIGZ1bmNQb2ludGVyKGludCgqYXIpKQp7Cgljb3V0IDw8ICJcbmZ1bmNQb2ludGVyOlxuIjsKCWNvdXQgPDwgdHlwZWlkKGFyKS5uYW1lKCkgPDwgIiAiIDw8IHNpemVvZihhcikgPDwgIiBieXRlXG4iOwoJY291dCA8PCAiYXJbNF0gIiA8PCBhcls0XSA8PCBlbmRsOwp9CgppbnQgbWFpbigpIHsKCWludCB4W10gPSB7MSwyLDMsNCw1fTsKCWNvdXQgPDwgIm1haW46XG4iOwoJY291dCA8PCB0eXBlaWQoeCkubmFtZSgpIDw8ICIgIiA8PCBzaXplb2YoeCkgPDwgIiBieXRlXG4iOwoJZnVuY0FycmF5KHgpOwoJZnVuY1BvaW50ZXIoeCk7CglmdW5jQXJyYXlSZWYoeCk7CglyZXR1cm4gMDsKfQ==