{"action":"created","comment":{"url":"https://api.github.com/repos/3Hren/cocaine-core/pulls/comments/80277498","id":80277498,"diff_hunk":"@@ -30,841 +30,846 @@ struct headers {\n     struct detail {\n         struct empty_placeholder {\n             static\n-            constexpr\n-            header::data_t\n+            const std::string&\n             name() {\n-                return header::create_data(\"\");\n+                static std::string data;\n+                return data;\n             }\n \n             static\n-            constexpr\n-            header::data_t\n+            const std::string&\n             value() {\n-                return header::create_data(\"\");\n-            }\n-        };\n-        template <class Value>\n-        struct value_mixin {\n-            static\n-            constexpr\n-            header::data_t\n-            value() {\n-                return Value::value();\n+                static std::string data;\n+                return data;\n             }\n         };\n     };\n \n public:\n-    template<class Header>\n-    static\n-    header_t\n-    make_header() {\n-        return header_t(Header::name(), Header::value());\n-    }\n-\n     struct default_values_t {\n         struct zero_uint_value_t {\n             static\n-            constexpr\n-            header::data_t\n+            const std::string&\n             value() {\n-                return header::create_data(\"\\0\\0\\0\\0\\0\\0\\0\\0\");\n+                static std::string data(\"\\0\\0\\0\\0\\0\\0\\0\\0\", 8);\n+                return data;\n+            }\n+        };\n+\n+        struct false_bool_value_t {\n+            static\n+            const std::string&\n+            value() {\n+                static std::string data(\"0\", 1);\n+                return data;\n             }\n         };\n \n         struct empty_string_value_t {\n             static\n-            constexpr\n-            header::data_t\n+            const std::string&\n             value() {\n-                return header::create_data(\"\");\n+                static std::string data;\n+                return data;\n             }\n         };\n \n         struct get_value_t {\n             static\n-            constexpr\n-            header::data_t\n+            const std::string&\n             value() {\n-                return header::create_data(\"GET\");\n+                static std::string data(\"GET\");\n+                return data;\n             }\n         };\n \n         struct post_value_t {\n             static\n-            constexpr\n-            header::data_t\n+            const std::string&\n             value() {\n-                return header::create_data(\"POST\");\n+                static std::string data(\"POST\");\n+                return data;\n             }\n         };\n \n         struct root_value_t {\n             static\n-            constexpr\n-            header::data_t\n+            const std::string&\n             value() {\n-                return header::create_data(\"/\");\n+                static std::string data(\"/\");\n+                return data;\n             }\n         };\n \n         struct index_value_t {\n             static\n-            constexpr\n-            header::data_t\n+            const std::string&\n             value() {\n-                return header::create_data(\"/index.html\");\n+                static std::string data(\"/index.html\");\n+                return data;\n             }\n         };\n \n         struct http_value_t {\n             static\n-            constexpr\n-            header::data_t\n+            const std::string&\n             value() {\n-                return header::create_data(\"http\");\n+                static std::string data(\"http\");\n+                return data;\n             }\n         };\n \n         struct https_value_t {\n             static\n-            constexpr\n-            header::data_t\n+            const std::string&\n             value() {\n-                return header::create_data(\"https\");\n+                static std::string data(\"https\");\n+                return data;\n             }\n         };\n \n         struct status_200_value_t {\n             static\n-            constexpr\n-            header::data_t\n+            const std::string&\n             value() {\n-                return header::create_data(\"200\");\n+                static std::string data(\"200\");\n+                return data;\n             }\n         };\n \n         struct status_204_value_t {\n             static\n-            constexpr\n-            header::data_t\n+            const std::string&\n             value() {\n-                return header::create_data(\"204\");\n+                static std::string data(\"204\");\n+                return data;\n             }\n         };\n \n         struct status_206_value_t {\n             static\n-            constexpr\n-            header::data_t\n+            const std::string&\n             value() {\n-                return header::create_data(\"206\");\n+                static std::string data(\"206\");\n+                return data;\n             }\n         };\n \n         struct status_304_value_t {\n             static\n-            constexpr\n-            header::data_t\n+            const std::string&\n             value() {\n-                return header::create_data(\"304\");\n+                static std::string data(\"304\");\n+                return data;\n             }\n         };\n \n         struct status_400_value_t {\n             static\n-            constexpr\n-            header::data_t\n+            const std::string&\n             value() {\n-                return header::create_data(\"400\");\n+                static std::string data(\"400\");\n+                return data;\n             }\n         };\n \n         struct status_404_value_t {\n             static\n-            constexpr\n-            header::data_t\n+            const std::string&\n             value() {\n-                return header::create_data(\"404\");\n+                static std::string data(\"404\");\n+                return data;\n             }\n         };\n \n         struct status_500_value_t {\n             static\n-            constexpr\n-            header::data_t\n+            const std::string&\n             value() {\n-                return header::create_data(\"500\");\n+                static std::string data(\"500\");\n+                return data;\n             }\n         };\n \n         struct gzip_value_t {\n             static\n-            constexpr\n-            header::data_t\n+            const std::string&\n             value() {\n-                return header::create_data(\"gzip, deflate\");\n+                static std::string data(\"gzip, deflate\");\n+                return data;\n             }\n         };\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct authority:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\":authority\");\n+            static std::string data(\":authority\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct method:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\":method\");\n+            static std::string data(\":method\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct path:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\":path\");\n+            static std::string data(\":path\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct scheme:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\":scheme\");\n+            static std::string data(\":scheme\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct status:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\":status\");\n+            static std::string data(\":status\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct accept_charset:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"accept-charset\");\n+            static std::string data(\"accept-charset\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct accept_encoding:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"accept-encoding\");\n+            static std::string data(\"accept-encoding\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct accept_language:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"accept-language\");\n+            static std::string data(\"accept-language\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct accept_ranges:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"accept-ranges\");\n+            static std::string data(\"accept-ranges\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct accept:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"accept\");\n+            static std::string data(\"accept\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct access_control_allow_origin:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"access-control-allow-origin\");\n+            static std::string data(\"access-control-allow-origin\");\n+                return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct age:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"age\");\n+            static std::string data(\"age\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct allow:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"allow\");\n+            static std::string data(\"allow\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct authorization:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"authorization\");\n+            static std::string data(\"authorization\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct cache_control:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"cache-control\");\n+            static std::string data(\"cache-control\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct content_disposition:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"content-disposition\");\n+            static std::string data(\"content-disposition\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct content_encoding:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"content-encoding\");\n+            static std::string data(\"content-encoding\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct content_language:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"content-language\");\n+            static std::string data(\"content-language\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct content_length:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"content-length\");\n+            static std::string data(\"content-length\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct content_location:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"content-location\");\n+            static std::string data(\"content-location\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct content_range:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"content-range\");\n+            static std::string data(\"content-range\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct content_type:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"content-type\");\n+            static std::string data(\"content-type\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct cookie:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"cookie\");\n+            static std::string data(\"cookie\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct date:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"date\");\n+            static std::string data(\"date\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct etag:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"etag\");\n+            static std::string data(\"etag\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct expect:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"expect\");\n+            static std::string data(\"expect\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct expires:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"expires\");\n+            static std::string data(\"expires\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct from:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"from\");\n+            static std::string data(\"from\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct host:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"host\");\n+            static std::string data(\"host\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct if_match:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"if-match\");\n+            static std::string data(\"if-match\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct if_modified_since:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"if-modified-since\");\n+            static std::string data(\"if-modified-since\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct if_none_match:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"if-none-match\");\n+            static std::string data(\"if-none-match\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct if_range:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"if-range\");\n+            static std::string data(\"if-range\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct if_unmodified_since:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"if-unmodified-since\");\n+            static std::string data(\"if-unmodified-since\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct last_modified:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"last-modified\");\n+            static std::string data(\"last-modified\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct link:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"link\");\n+            static std::string data(\"link\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct location:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"location\");\n+            static std::string data(\"location\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct max_forwards:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"max-forwards\");\n+            static std::string data(\"max-forwards\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct proxy_authenticate:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"proxy-authenticate\");\n+            static std::string data(\"proxy-authenticate\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct proxy_authorization:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"proxy-authorization\");\n+            static std::string data(\"proxy-authorization\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct range:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"range\");\n+            static std::string data(\"range\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct referer:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"referer\");\n+            static std::string data(\"referer\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct refresh:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"refresh\");\n+            static std::string data(\"refresh\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct retry_after:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"retry-after\");\n+            static std::string data(\"retry-after\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct server:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"server\");\n+            static std::string data(\"server\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct set_cookie:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"set-cookie\");\n+            static std::string data(\"set-cookie\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct strict_transport_security:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"strict-transport-security\");\n+            static std::string data(\"strict-transport-security\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct transfer_encoding:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"transfer-encoding\");\n+            static std::string data(\"transfer-encoding\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct user_agent:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"user-agent\");\n+            static std::string data(\"user-agent\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct vary:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"vary\");\n+            static std::string data(\"vary\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct via:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"via\");\n+            static std::string data(\"via\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::empty_string_value_t>\n     struct www_authenticate:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&\n         name() {\n-            return header::create_data(\"www-authenticate\");\n+            static std::string data(\"www-authenticate\");\n+            return data;\n         }\n     };\n \n     template<class DefaultValue = default_values_t::zero_uint_value_t>\n     struct span_id:\n-        public detail::value_mixin<DefaultValue>\n+        public DefaultValue\n     {\n         static\n-        constexpr\n-        header::data_t\n+        const std::string&","path":"include/cocaine/hpack/header_definitions.hpp","position":253,"original_position":1085,"commit_id":"1b170fd3fcd6cd6f8bce67f623b955efba112819","original_commit_id":"1b170fd3fcd6cd6f8bce67f623b955efba112819","user":{"login":"3Hren","id":969900,"avatar_url":"https://avatars.githubusercontent.com/u/969900?v=3","gravatar_id":"","url":"https://api.github.com/users/3Hren","html_url":"https://github.com/3Hren","followers_url":"https://api.github.com/users/3Hren/followers","following_url":"https://api.github.com/users/3Hren/following{/other_user}","gists_url":"https://api.github.com/users/3Hren/gists{/gist_id}","starred_url":"https://api.github.com/users/3Hren/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/3Hren/subscriptions","organizations_url":"https://api.github.com/users/3Hren/orgs","repos_url":"https://api.github.com/users/3Hren/repos","events_url":"https://api.github.com/users/3Hren/events{/privacy}","received_events_url":"https://api.github.com/users/3Hren/received_events","type":"User","site_admin":false},"body":"Do we really need to return a const reference to `std::string`. Why not `const char*`?","created_at":"2016-09-23T16:21:48Z","updated_at":"2016-09-23T16:21:48Z","html_url":"https://github.com/3Hren/cocaine-core/pull/104#discussion_r80277498","pull_request_url":"https://api.github.com/repos/3Hren/cocaine-core/pulls/104","_links":{"self":{"href":"https://api.github.com/repos/3Hren/cocaine-core/pulls/comments/80277498"},"html":{"href":"https://github.com/3Hren/cocaine-core/pull/104#discussion_r80277498"},"pull_request":{"href":"https://api.github.com/repos/3Hren/cocaine-core/pulls/104"}}},"pull_request":{"url":"https://api.github.com/repos/3Hren/cocaine-core/pulls/104","id":86526738,"html_url":"https://github.com/3Hren/cocaine-core/pull/104","diff_url":"https://github.com/3Hren/cocaine-core/pull/104.diff","patch_url":"https://github.com/3Hren/cocaine-core/pull/104.patch","issue_url":"https://api.github.com/repos/3Hren/cocaine-core/issues/104","number":104,"state":"open","locked":false,"title":"Hpack refactoring","user":{"login":"antmat","id":691770,"avatar_url":"https://avatars.githubusercontent.com/u/691770?v=3","gravatar_id":"","url":"https://api.github.com/users/antmat","html_url":"https://github.com/antmat","followers_url":"https://api.github.com/users/antmat/followers","following_url":"https://api.github.com/users/antmat/following{/other_user}","gists_url":"https://api.github.com/users/antmat/gists{/gist_id}","starred_url":"https://api.github.com/users/antmat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/antmat/subscriptions","organizations_url":"https://api.github.com/users/antmat/orgs","repos_url":"https://api.github.com/users/antmat/repos","events_url":"https://api.github.com/users/antmat/events{/privacy}","received_events_url":"https://api.github.com/users/antmat/received_events","type":"User","site_admin":false},"body":"","created_at":"2016-09-23T14:53:10Z","updated_at":"2016-09-23T16:25:24Z","closed_at":null,"merged_at":null,"merge_commit_sha":"a96e7e7c070e4b2b26e291bca9ed7be1c21f23ac","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/3Hren/cocaine-core/pulls/104/commits","review_comments_url":"https://api.github.com/repos/3Hren/cocaine-core/pulls/104/comments","review_comment_url":"https://api.github.com/repos/3Hren/cocaine-core/pulls/comments{/number}","comments_url":"https://api.github.com/repos/3Hren/cocaine-core/issues/104/comments","statuses_url":"https://api.github.com/repos/3Hren/cocaine-core/statuses/1b170fd3fcd6cd6f8bce67f623b955efba112819","head":{"label":"antmat:hpack_refactoring","ref":"hpack_refactoring","sha":"1b170fd3fcd6cd6f8bce67f623b955efba112819","user":{"login":"antmat","id":691770,"avatar_url":"https://avatars.githubusercontent.com/u/691770?v=3","gravatar_id":"","url":"https://api.github.com/users/antmat","html_url":"https://github.com/antmat","followers_url":"https://api.github.com/users/antmat/followers","following_url":"https://api.github.com/users/antmat/following{/other_user}","gists_url":"https://api.github.com/users/antmat/gists{/gist_id}","starred_url":"https://api.github.com/users/antmat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/antmat/subscriptions","organizations_url":"https://api.github.com/users/antmat/orgs","repos_url":"https://api.github.com/users/antmat/repos","events_url":"https://api.github.com/users/antmat/events{/privacy}","received_events_url":"https://api.github.com/users/antmat/received_events","type":"User","site_admin":false},"repo":{"id":30540805,"name":"cocaine-core","full_name":"antmat/cocaine-core","owner":{"login":"antmat","id":691770,"avatar_url":"https://avatars.githubusercontent.com/u/691770?v=3","gravatar_id":"","url":"https://api.github.com/users/antmat","html_url":"https://github.com/antmat","followers_url":"https://api.github.com/users/antmat/followers","following_url":"https://api.github.com/users/antmat/following{/other_user}","gists_url":"https://api.github.com/users/antmat/gists{/gist_id}","starred_url":"https://api.github.com/users/antmat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/antmat/subscriptions","organizations_url":"https://api.github.com/users/antmat/orgs","repos_url":"https://api.github.com/users/antmat/repos","events_url":"https://api.github.com/users/antmat/events{/privacy}","received_events_url":"https://api.github.com/users/antmat/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/antmat/cocaine-core","description":"An open platform to build your own PaaS clouds.","fork":true,"url":"https://api.github.com/repos/antmat/cocaine-core","forks_url":"https://api.github.com/repos/antmat/cocaine-core/forks","keys_url":"https://api.github.com/repos/antmat/cocaine-core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/antmat/cocaine-core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/antmat/cocaine-core/teams","hooks_url":"https://api.github.com/repos/antmat/cocaine-core/hooks","issue_events_url":"https://api.github.com/repos/antmat/cocaine-core/issues/events{/number}","events_url":"https://api.github.com/repos/antmat/cocaine-core/events","assignees_url":"https://api.github.com/repos/antmat/cocaine-core/assignees{/user}","branches_url":"https://api.github.com/repos/antmat/cocaine-core/branches{/branch}","tags_url":"https://api.github.com/repos/antmat/cocaine-core/tags","blobs_url":"https://api.github.com/repos/antmat/cocaine-core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/antmat/cocaine-core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/antmat/cocaine-core/git/refs{/sha}","trees_url":"https://api.github.com/repos/antmat/cocaine-core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/antmat/cocaine-core/statuses/{sha}","languages_url":"https://api.github.com/repos/antmat/cocaine-core/languages","stargazers_url":"https://api.github.com/repos/antmat/cocaine-core/stargazers","contributors_url":"https://api.github.com/repos/antmat/cocaine-core/contributors","subscribers_url":"https://api.github.com/repos/antmat/cocaine-core/subscribers","subscription_url":"https://api.github.com/repos/antmat/cocaine-core/subscription","commits_url":"https://api.github.com/repos/antmat/cocaine-core/commits{/sha}","git_commits_url":"https://api.github.com/repos/antmat/cocaine-core/git/commits{/sha}","comments_url":"https://api.github.com/repos/antmat/cocaine-core/comments{/number}","issue_comment_url":"https://api.github.com/repos/antmat/cocaine-core/issues/comments{/number}","contents_url":"https://api.github.com/repos/antmat/cocaine-core/contents/{+path}","compare_url":"https://api.github.com/repos/antmat/cocaine-core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/antmat/cocaine-core/merges","archive_url":"https://api.github.com/repos/antmat/cocaine-core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/antmat/cocaine-core/downloads","issues_url":"https://api.github.com/repos/antmat/cocaine-core/issues{/number}","pulls_url":"https://api.github.com/repos/antmat/cocaine-core/pulls{/number}","milestones_url":"https://api.github.com/repos/antmat/cocaine-core/milestones{/number}","notifications_url":"https://api.github.com/repos/antmat/cocaine-core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/antmat/cocaine-core/labels{/name}","releases_url":"https://api.github.com/repos/antmat/cocaine-core/releases{/id}","deployments_url":"https://api.github.com/repos/antmat/cocaine-core/deployments","created_at":"2015-02-09T14:53:42Z","updated_at":"2015-04-10T11:11:09Z","pushed_at":"2016-09-23T14:49:32Z","git_url":"git://github.com/antmat/cocaine-core.git","ssh_url":"git@github.com:antmat/cocaine-core.git","clone_url":"https://github.com/antmat/cocaine-core.git","svn_url":"https://github.com/antmat/cocaine-core","homepage":"","size":13659,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"3Hren:develop","ref":"develop","sha":"c06550dcd4e33218f01263d55ab80647119c3af7","user":{"login":"3Hren","id":969900,"avatar_url":"https://avatars.githubusercontent.com/u/969900?v=3","gravatar_id":"","url":"https://api.github.com/users/3Hren","html_url":"https://github.com/3Hren","followers_url":"https://api.github.com/users/3Hren/followers","following_url":"https://api.github.com/users/3Hren/following{/other_user}","gists_url":"https://api.github.com/users/3Hren/gists{/gist_id}","starred_url":"https://api.github.com/users/3Hren/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/3Hren/subscriptions","organizations_url":"https://api.github.com/users/3Hren/orgs","repos_url":"https://api.github.com/users/3Hren/repos","events_url":"https://api.github.com/users/3Hren/events{/privacy}","received_events_url":"https://api.github.com/users/3Hren/received_events","type":"User","site_admin":false},"repo":{"id":11948568,"name":"cocaine-core","full_name":"3Hren/cocaine-core","owner":{"login":"3Hren","id":969900,"avatar_url":"https://avatars.githubusercontent.com/u/969900?v=3","gravatar_id":"","url":"https://api.github.com/users/3Hren","html_url":"https://github.com/3Hren","followers_url":"https://api.github.com/users/3Hren/followers","following_url":"https://api.github.com/users/3Hren/following{/other_user}","gists_url":"https://api.github.com/users/3Hren/gists{/gist_id}","starred_url":"https://api.github.com/users/3Hren/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/3Hren/subscriptions","organizations_url":"https://api.github.com/users/3Hren/orgs","repos_url":"https://api.github.com/users/3Hren/repos","events_url":"https://api.github.com/users/3Hren/events{/privacy}","received_events_url":"https://api.github.com/users/3Hren/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/3Hren/cocaine-core","description":"Cocaine Application Engine","fork":true,"url":"https://api.github.com/repos/3Hren/cocaine-core","forks_url":"https://api.github.com/repos/3Hren/cocaine-core/forks","keys_url":"https://api.github.com/repos/3Hren/cocaine-core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/3Hren/cocaine-core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/3Hren/cocaine-core/teams","hooks_url":"https://api.github.com/repos/3Hren/cocaine-core/hooks","issue_events_url":"https://api.github.com/repos/3Hren/cocaine-core/issues/events{/number}","events_url":"https://api.github.com/repos/3Hren/cocaine-core/events","assignees_url":"https://api.github.com/repos/3Hren/cocaine-core/assignees{/user}","branches_url":"https://api.github.com/repos/3Hren/cocaine-core/branches{/branch}","tags_url":"https://api.github.com/repos/3Hren/cocaine-core/tags","blobs_url":"https://api.github.com/repos/3Hren/cocaine-core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/3Hren/cocaine-core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/3Hren/cocaine-core/git/refs{/sha}","trees_url":"https://api.github.com/repos/3Hren/cocaine-core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/3Hren/cocaine-core/statuses/{sha}","languages_url":"https://api.github.com/repos/3Hren/cocaine-core/languages","stargazers_url":"https://api.github.com/repos/3Hren/cocaine-core/stargazers","contributors_url":"https://api.github.com/repos/3Hren/cocaine-core/contributors","subscribers_url":"https://api.github.com/repos/3Hren/cocaine-core/subscribers","subscription_url":"https://api.github.com/repos/3Hren/cocaine-core/subscription","commits_url":"https://api.github.com/repos/3Hren/cocaine-core/commits{/sha}","git_commits_url":"https://api.github.com/repos/3Hren/cocaine-core/git/commits{/sha}","comments_url":"https://api.github.com/repos/3Hren/cocaine-core/comments{/number}","issue_comment_url":"https://api.github.com/repos/3Hren/cocaine-core/issues/comments{/number}","contents_url":"https://api.github.com/repos/3Hren/cocaine-core/contents/{+path}","compare_url":"https://api.github.com/repos/3Hren/cocaine-core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/3Hren/cocaine-core/merges","archive_url":"https://api.github.com/repos/3Hren/cocaine-core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/3Hren/cocaine-core/downloads","issues_url":"https://api.github.com/repos/3Hren/cocaine-core/issues{/number}","pulls_url":"https://api.github.com/repos/3Hren/cocaine-core/pulls{/number}","milestones_url":"https://api.github.com/repos/3Hren/cocaine-core/milestones{/number}","notifications_url":"https://api.github.com/repos/3Hren/cocaine-core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/3Hren/cocaine-core/labels{/name}","releases_url":"https://api.github.com/repos/3Hren/cocaine-core/releases{/id}","deployments_url":"https://api.github.com/repos/3Hren/cocaine-core/deployments","created_at":"2013-08-07T11:36:51Z","updated_at":"2016-08-15T20:54:07Z","pushed_at":"2016-09-23T14:53:10Z","git_url":"git://github.com/3Hren/cocaine-core.git","ssh_url":"git@github.com:3Hren/cocaine-core.git","clone_url":"https://github.com/3Hren/cocaine-core.git","svn_url":"https://github.com/3Hren/cocaine-core","homepage":"","size":13760,"stargazers_count":2,"watchers_count":2,"language":"C++","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":4,"mirror_url":null,"open_issues_count":1,"forks":4,"open_issues":1,"watchers":2,"default_branch":"v0.12.9"}},"_links":{"self":{"href":"https://api.github.com/repos/3Hren/cocaine-core/pulls/104"},"html":{"href":"https://github.com/3Hren/cocaine-core/pull/104"},"issue":{"href":"https://api.github.com/repos/3Hren/cocaine-core/issues/104"},"comments":{"href":"https://api.github.com/repos/3Hren/cocaine-core/issues/104/comments"},"review_comments":{"href":"https://api.github.com/repos/3Hren/cocaine-core/pulls/104/comments"},"review_comment":{"href":"https://api.github.com/repos/3Hren/cocaine-core/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/3Hren/cocaine-core/pulls/104/commits"},"statuses":{"href":"https://api.github.com/repos/3Hren/cocaine-core/statuses/1b170fd3fcd6cd6f8bce67f623b955efba112819"}}}}
{"actor":{"display_login":"3Hren"}}