- #include <iostream> 
- #include <array> 
- #include <memory> 
-   
- std::unique_ptr<float[]> data(new float[40]()); 
-   
- struct LinhaSobre4f 
- { 
-     LinhaSobre4f(float * pos_begin, size_t size_): 
-         pos0(pos_begin), 
-         size_(size_){} 
-     std::array<float, 4> & operator[](size_t i)const 
-     { 
-         std::array<float,4> * r =  
-             reinterpret_cast<std::array<float,4>*> (pos0+(4*i)); 
-         return *r; 
-     } 
-     size_t size()const 
-     { 
-     	return size_; 
-     } 
- private: 
-     float * pos0; 
-     size_t size_; 
- }; 
-   
- int main() { 
- 	LinhaSobre4f l(data.get()+(3*4), 4); 
- 	//assigning from container 
-     	for(size_t i = 0; i < l.size(); i++) 
-     		l[i] = { {1.5f, 2.5f, 3.5f, 4.5f} }; 
- 	//printing from data itself 
-     	for(size_t i = 0; i < 10; i++) 
-     	{ 
-     		std::cout << "f4 " << i << " : " ; 
-     		for(size_t j = 0; j < 4; j++) 
-     			std::cout << data[i*4+j] << " "; 
-     		std::cout << std::endl; 
-     	} 
- 	return 0; 
- } 
				I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YXJyYXk+CiNpbmNsdWRlIDxtZW1vcnk+CgpzdGQ6OnVuaXF1ZV9wdHI8ZmxvYXRbXT4gZGF0YShuZXcgZmxvYXRbNDBdKCkpOwoKc3RydWN0IExpbmhhU29icmU0Zgp7CiAgICBMaW5oYVNvYnJlNGYoZmxvYXQgKiBwb3NfYmVnaW4sIHNpemVfdCBzaXplXyk6CiAgICAgICAgcG9zMChwb3NfYmVnaW4pLAogICAgICAgIHNpemVfKHNpemVfKXt9CiAgICBzdGQ6OmFycmF5PGZsb2F0LCA0PiAmIG9wZXJhdG9yW10oc2l6ZV90IGkpY29uc3QKICAgIHsKICAgICAgICBzdGQ6OmFycmF5PGZsb2F0LDQ+ICogciA9IAogICAgICAgICAgICByZWludGVycHJldF9jYXN0PHN0ZDo6YXJyYXk8ZmxvYXQsND4qPiAocG9zMCsoNCppKSk7CiAgICAgICAgcmV0dXJuICpyOwogICAgfQogICAgc2l6ZV90IHNpemUoKWNvbnN0CiAgICB7CiAgICAJcmV0dXJuIHNpemVfOwogICAgfQpwcml2YXRlOgogICAgZmxvYXQgKiBwb3MwOwogICAgc2l6ZV90IHNpemVfOwp9OwoKaW50IG1haW4oKSB7CglMaW5oYVNvYnJlNGYgbChkYXRhLmdldCgpKygzKjQpLCA0KTsKCS8vYXNzaWduaW5nIGZyb20gY29udGFpbmVyCiAgICAJZm9yKHNpemVfdCBpID0gMDsgaSA8IGwuc2l6ZSgpOyBpKyspCiAgICAJCWxbaV0gPSB7IHsxLjVmLCAyLjVmLCAzLjVmLCA0LjVmfSB9OwoJLy9wcmludGluZyBmcm9tIGRhdGEgaXRzZWxmCiAgICAJZm9yKHNpemVfdCBpID0gMDsgaSA8IDEwOyBpKyspCiAgICAJewogICAgCQlzdGQ6OmNvdXQgPDwgImY0ICIgPDwgaSA8PCAiIDogIiA7CiAgICAJCWZvcihzaXplX3QgaiA9IDA7IGogPCA0OyBqKyspCiAgICAJCQlzdGQ6OmNvdXQgPDwgZGF0YVtpKjQral0gPDwgIiAiOwogICAgCQlzdGQ6OmNvdXQgPDwgc3RkOjplbmRsOwogICAgCX0KCXJldHVybiAwOwp9