]> code.bitgloo.com Git - clyne/constexpr-to-string.git/commitdiff
Initialize buf for C++17 GCC; make to_string constexpr
authorclyne <clyne@bitgloo.com>
Fri, 26 Jun 2020 20:41:17 +0000 (16:41 -0400)
committerGitHub <noreply@github.com>
Fri, 26 Jun 2020 20:41:17 +0000 (16:41 -0400)
https://www.reddit.com/r/cpp/comments/hgcaih/compiletime_integertostring_conversion_c17/fw3d2fm/

to_string.hpp

index 116cdd8f8c498d31b57e6d9fbb1a7626e34c3999..15df021c1fb27ba31b4a208cb960f1005be7da84 100644 (file)
@@ -25,12 +25,12 @@ struct to_string_t {
                   unsigned int len = N >= 0 ? 1 : 2;
                   for (auto n = N < 0 ? -N : N; n; len++, n /= base);
                   return len;
-             }())];
+             }())] = {};
 
     /**
      * Constructs the object, filling `buf` with the string representation of N.
      */
-    constexpr to_string_t() {
+    constexpr to_string_t() noexcept {
         auto ptr = buf + sizeof(buf) / sizeof(buf[0]);
         *--ptr = '\0';
         for (auto n = N < 0 ? -N : N; n; n /= base)
@@ -58,6 +58,6 @@ struct to_string_t {
  * Simplifies use of `to_string_t` from `to_string_t<N>()` to `to_string<N>`.
  */
 template<auto N, unsigned int base = 10>
-to_string_t<N, base> to_string;
+constexpr to_string_t<N, base> to_string;
  
 #endif // TCSULLIVAN_TO_STRING_HPP_