diff options
| -rw-r--r-- | libadhocutil/compileTimeFormatter.h | 50 | 
1 files changed, 29 insertions, 21 deletions
| diff --git a/libadhocutil/compileTimeFormatter.h b/libadhocutil/compileTimeFormatter.h index 46b7ec9..d13492a 100644 --- a/libadhocutil/compileTimeFormatter.h +++ b/libadhocutil/compileTimeFormatter.h @@ -222,27 +222,6 @@ namespace AdHoc {  			};  	}; -	namespace literals { -#ifdef __clang__ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wgnu-string-literal-operator-template" -#endif -		/// CTF format string holder -		template<typename T, T ... t> struct FMT -		{ -			/// CTF format string -			// NOLINTNEXTLINE(hicpp-avoid-c-arrays,modernize-avoid-c-arrays) -			static constexpr char __FMT[] = {t...}; -		}; -		template<typename T, T ... t> inline auto operator""_fmt() noexcept -		{ -			return AdHoc::FormatterDetail<FMT<T, t...>::__FMT, sizeof...(t)>(); -		} -#ifdef __clang__ -#pragma clang diagnostic pop -#endif -	} -  #ifdef USE_FIXED_STRING  	// New C++20 implementation  	namespace support { @@ -308,6 +287,35 @@ namespace AdHoc {      AdHocFormatterTypedef(name, str, MAKE_UNIQUE(name))  #endif + +	namespace literals { +#ifdef USE_FIXED_STRING +		template<const support::basic_fixed_string Str> +		constexpr inline auto operator""_fmt() noexcept +		{ +			return AdHoc::FormatterDetail<Str, Str.size()>(); +		} +#else +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgnu-string-literal-operator-template" +#endif +		/// CTF format string holder +		template<typename T, T ... t> struct FMT +		{ +			/// CTF format string +			// NOLINTNEXTLINE(hicpp-avoid-c-arrays,modernize-avoid-c-arrays) +			static constexpr char __FMT[] = {t...}; +		}; +		template<typename T, T ... t> inline auto operator""_fmt() noexcept +		{ +			return AdHoc::FormatterDetail<FMT<T, t...>::__FMT, sizeof...(t)>(); +		} +#endif +#ifdef __clang__ +#pragma clang diagnostic pop +#endif +	}  }  #endif | 
