- #include <iostream> 
- #include <boost/array.hpp> 
- #include <algorithm> 
-   
- template <typename T, size_t N> 
- inline boost::array<T,N>& to_array(T(&ar)[N]) { 
-         return *reinterpret_cast<boost::array<T,N>*>(&ar[0]); 
- } 
- template <typename T, size_t N> 
- inline const boost::array<T,N>& to_array(const T(&ar)[N]) { 
-         return *reinterpret_cast<const boost::array<T,N>*>(&ar[0]); 
- } 
-   
- using namespace std; 
-   
- int main(int ac, char* av[]) { 
- 	const int hoge[] = {1,2,3,4,5}; 
- 	int foo[5]; 
- 	to_array(foo) = to_array(hoge); 
- 	for (size_t i = 0; i < to_array(foo).size(); ++i) { 
- 		cout << "foo[" << i << "]=" << foo[i] << endl; 
- 	} 
-   
- 	copy(to_array(hoge).rbegin(), to_array(hoge).rend(), to_array(foo).begin()); 
-   
- 	for (boost::array<int,5>::iterator i = to_array(foo).begin(); i != to_array(foo).end(); ++i) { 
- 		cout << *i << endl; 
- 	} 
-   
- } 
-   
				I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Ym9vc3QvYXJyYXkuaHBwPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOPgppbmxpbmUgYm9vc3Q6OmFycmF5PFQsTj4mIHRvX2FycmF5KFQoJmFyKVtOXSkgewogICAgICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxib29zdDo6YXJyYXk8VCxOPio+KCZhclswXSk7Cn0KdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHNpemVfdCBOPgppbmxpbmUgY29uc3QgYm9vc3Q6OmFycmF5PFQsTj4mIHRvX2FycmF5KGNvbnN0IFQoJmFyKVtOXSkgewogICAgICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBib29zdDo6YXJyYXk8VCxOPio+KCZhclswXSk7Cn0KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbihpbnQgYWMsIGNoYXIqIGF2W10pIHsKCWNvbnN0IGludCBob2dlW10gPSB7MSwyLDMsNCw1fTsKCWludCBmb29bNV07Cgl0b19hcnJheShmb28pID0gdG9fYXJyYXkoaG9nZSk7Cglmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRvX2FycmF5KGZvbykuc2l6ZSgpOyArK2kpIHsKCQljb3V0IDw8ICJmb29bIiA8PCBpIDw8ICJdPSIgPDwgZm9vW2ldIDw8IGVuZGw7Cgl9CgkKCWNvcHkodG9fYXJyYXkoaG9nZSkucmJlZ2luKCksIHRvX2FycmF5KGhvZ2UpLnJlbmQoKSwgdG9fYXJyYXkoZm9vKS5iZWdpbigpKTsKCglmb3IgKGJvb3N0OjphcnJheTxpbnQsNT46Oml0ZXJhdG9yIGkgPSB0b19hcnJheShmb28pLmJlZ2luKCk7IGkgIT0gdG9fYXJyYXkoZm9vKS5lbmQoKTsgKytpKSB7CgkJY291dCA8PCAqaSA8PCBlbmRsOwoJfQoKfQo=