You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							31 lines
						
					
					
						
							862 B
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							31 lines
						
					
					
						
							862 B
						
					
					
				| /* | |
|  * This is component of StoRM - Cuda Plugin to check whether a pair of uint_fast64_t and float gets auto-aligned to match 64bit boundaries | |
|  */ | |
|  #include <cstdint> | |
|  #include <utility> | |
|  #include <vector> | |
|   | |
|  #define CONTAINER_SIZE 100ul | |
|  | |
| int main(int argc, char* argv[]) { | |
| 	int result = 0; | |
| 
 | |
| 	std::vector<std::pair<uint_fast64_t, float>> myVector; | |
| 	for (size_t i = 0; i < CONTAINER_SIZE; ++i) { | |
| 		myVector.push_back(std::make_pair(i, 42.12345f * i)); | |
| 	} | |
| 	 | |
| 	char* firstUintPointer = reinterpret_cast<char*>(&(myVector.at(0).first)); | |
| 	char* secondUintPointer = reinterpret_cast<char*>(&(myVector.at(1).first)); | |
| 	ptrdiff_t uintDiff = secondUintPointer - firstUintPointer; | |
| 	 | |
| 	if (uintDiff == (2 * sizeof(uint_fast64_t))) { | |
| 		result = 2; | |
| 	} else if (uintDiff == (sizeof(uint_fast64_t) + sizeof(float))) { | |
| 		result = 3; | |
| 	} else { | |
| 		result = -5; | |
| 	} | |
| 	 | |
| 	return result; | |
|  }
 |