mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-31 04:50:34 -04:00 
			
		
		
		
	
		
			
	
	
		
			86 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			86 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|  | //  (C) Copyright Beman Dawes 2008 | ||
|  | 
 | ||
|  | //  Use, modification and distribution are subject to the | ||
|  | //  Boost Software License, Version 1.0. (See accompanying file | ||
|  | //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | ||
|  | 
 | ||
|  | //  See http://www.boost.org/libs/config for more information. | ||
|  | 
 | ||
|  | //  MACRO:         BOOST_NO_CXX11_CONSTEXPR  | ||
|  | //  TITLE:         C++0x constexpr unavailable | ||
|  | //  DESCRIPTION:   The compiler does not support C++0x constexpr | ||
|  | 
 | ||
|  | namespace boost_no_cxx11_constexpr { | ||
|  | 
 | ||
|  | void quiet_warning(int){} | ||
|  | 
 | ||
|  | constexpr int square(int x) { return x * x; }  // from N2235 | ||
|  | 
 | ||
|  | // from 5.19: | ||
|  | constexpr const int* addr(const int& ir) { return &ir; } | ||
|  | static const int x = 5; | ||
|  | constexpr const int* xp = addr(x); | ||
|  | 
 | ||
|  | struct A  | ||
|  | { | ||
|  |    constexpr A(int i) : val(i) { } | ||
|  |    constexpr operator int()const { return val; } | ||
|  |    constexpr operator long()const { return 43; } | ||
|  | private: | ||
|  |    int val; | ||
|  | }; | ||
|  | 
 | ||
|  | template<int> struct X { }; | ||
|  | 
 | ||
|  | 
 | ||
|  | #if __cplusplus < 201400L | ||
|  | // Some C++14 compilers reject this (clang), some C++11 compilers reject "constexpr const" (GCC-4.6) | ||
|  | constexpr A a = 42; | ||
|  | #else | ||
|  | constexpr const A a = 42; | ||
|  | #endif | ||
|  | 
 | ||
|  | X<a> xx; // OK: unique conversion to int | ||
|  | 
 | ||
|  | // virtual function | ||
|  | struct B | ||
|  | { | ||
|  |    virtual void vf() {} | ||
|  | }; | ||
|  | struct C : B | ||
|  | { | ||
|  |    constexpr C() {} | ||
|  | }; | ||
|  | 
 | ||
|  | // aggregate initialization | ||
|  | struct D | ||
|  | { | ||
|  |    int val[2]; | ||
|  |    constexpr D() : val() {} | ||
|  | }; | ||
|  | 
 | ||
|  | // virtual base | ||
|  | struct E | ||
|  | { | ||
|  | }; | ||
|  | struct F : virtual E | ||
|  | { | ||
|  | }; | ||
|  | constexpr F& f(F& out) { return out; } | ||
|  | 
 | ||
|  | int test() | ||
|  | { | ||
|  |   int i = square(5); | ||
|  |   quiet_warning(i); | ||
|  | 
 | ||
|  |   switch (i) | ||
|  |   { | ||
|  |   case a: | ||
|  |     break; | ||
|  |   } | ||
|  | 
 | ||
|  |   return 0; | ||
|  | } | ||
|  | 
 | ||
|  | } |