31 lines
		
	
	
		
			895 B
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			895 B
		
	
	
	
		
			C++
		
	
	
	
| // RUN: %clang_cc1 -std=c++1z -fmodules %s -verify
 | |
| // expected-no-diagnostics
 | |
| 
 | |
| #pragma clang module build std
 | |
| module std { module limits {} module other {} }
 | |
| #pragma clang module contents
 | |
| #pragma clang module begin std.limits
 | |
| template<typename T> struct numeric_limits {
 | |
|   static constexpr T __max = 5;
 | |
|   static constexpr T max() { return __max; }
 | |
| };
 | |
| #pragma clang module end
 | |
| #pragma clang module begin std.other
 | |
| inline void f() { numeric_limits<int> nl; }
 | |
| #pragma clang module end
 | |
| #pragma clang module endbuild
 | |
| 
 | |
| #pragma clang module build module_b
 | |
| module module_b {}
 | |
| #pragma clang module contents
 | |
| #pragma clang module begin module_b
 | |
| #pragma clang module import std.limits
 | |
| constexpr int a = numeric_limits<int>::max();
 | |
| #pragma clang module end
 | |
| #pragma clang module endbuild
 | |
| 
 | |
| #pragma clang module import std.limits
 | |
| #pragma clang module import module_b
 | |
| constexpr int b = a;
 | |
| static_assert(b == 5);
 |