- #include <Eigen/Core> 
-   
- #include <vector> 
- #include <iostream> 
-   
- using namespace std; 
- using namespace Eigen; 
-   
- template <typename T> 
- void log_alignment(const T* t) 
- { 
-   unsigned long long address = reinterpret_cast<unsigned long long>(t);   
-   
-   int max_alignment_check = 256; 
-   for (; max_alignment_check>1; max_alignment_check/=2) 
-   { 
-     if (address % max_alignment_check == 0) 
-       break; 
-   } 
-   
-   std::cout << "Address 0x" << std::hex << address << " is " << std::dec << max_alignment_check << " bit aligned.\n"; 
- } 
-   
- struct B 
- { 
-   char c; 
-   Vector4f a; 
- }; 
-   
- int main() 
- { 
-   B b; 
-   B* b_ptr = new B; 
-   B* b_arr = new B[10];   
-   std::vector<B> b_vec(10); 
-   
-   log_alignment(&b); 
-   log_alignment(b_ptr); 
-   log_alignment(b_arr);   
-   log_alignment(b_vec.data()); 
- } 
-   
				I2luY2x1ZGUgPEVpZ2VuL0NvcmU+CgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8aW9zdHJlYW0+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp1c2luZyBuYW1lc3BhY2UgRWlnZW47Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4Kdm9pZCBsb2dfYWxpZ25tZW50KGNvbnN0IFQqIHQpCnsKICB1bnNpZ25lZCBsb25nIGxvbmcgYWRkcmVzcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgbG9uZyBsb25nPih0KTsgIAoKICBpbnQgbWF4X2FsaWdubWVudF9jaGVjayA9IDI1NjsKICBmb3IgKDsgbWF4X2FsaWdubWVudF9jaGVjaz4xOyBtYXhfYWxpZ25tZW50X2NoZWNrLz0yKQogIHsKICAgIGlmIChhZGRyZXNzICUgbWF4X2FsaWdubWVudF9jaGVjayA9PSAwKQogICAgICBicmVhazsKICB9CgogIHN0ZDo6Y291dCA8PCAiQWRkcmVzcyAweCIgPDwgc3RkOjpoZXggPDwgYWRkcmVzcyA8PCAiIGlzICIgPDwgc3RkOjpkZWMgPDwgbWF4X2FsaWdubWVudF9jaGVjayA8PCAiIGJpdCBhbGlnbmVkLlxuIjsKfQoKc3RydWN0IEIKewogIGNoYXIgYzsKICBWZWN0b3I0ZiBhOwp9OwoKaW50IG1haW4oKQp7CiAgQiBiOwogIEIqIGJfcHRyID0gbmV3IEI7CiAgQiogYl9hcnIgPSBuZXcgQlsxMF07ICAKICBzdGQ6OnZlY3RvcjxCPiBiX3ZlYygxMCk7CgogIGxvZ19hbGlnbm1lbnQoJmIpOwogIGxvZ19hbGlnbm1lbnQoYl9wdHIpOwogIGxvZ19hbGlnbm1lbnQoYl9hcnIpOyAgCiAgbG9nX2FsaWdubWVudChiX3ZlYy5kYXRhKCkpOwp9Cg==