Add new struct: StringLiteral
ADD
include/vcpkg/base/stringliteral.h
+#pragma once
+
+#include <vcpkg/base/cstringview.h>
+
+namespace vcpkg
+{
+ struct StringLiteral
+ {
+ template<int N>
+ constexpr StringLiteral(const char (&str)[N]) : m_size(N), m_cstr(str)
+ {
+ }
+
+ constexpr const char* c_str() const { return m_cstr; }
+ constexpr size_t size() const { return m_size; }
+
+ operator CStringView() const { return m_cstr; }
+ operator std::string() const { return m_cstr; }
+
+ private:
+ size_t m_size;
+ const char* m_cstr;
+ };
+
+ inline const char* to_printf_arg(const StringLiteral str) { return str.c_str(); }
+}

MODIFY
vcpkglib/vcpkglib.vcxproj
vcpkglib/vcpkglib.vcxproj
<ClInclude Include="..\include\vcpkg\base\optional.h" />
<ClInclude Include="..\include\vcpkg\base\sortedvector.h" />
<ClInclude Include="..\include\vcpkg\base\span.h" />
+ <ClInclude Include="..\include\vcpkg\base\stringliteral.h" />
<ClInclude Include="..\include\vcpkg\base\strings.h" />
<ClInclude Include="..\include\vcpkg\base\system.h" />
<ClInclude Include="..\include\vcpkg\base\util.h" />

MODIFY
vcpkglib/vcpkglib.vcxproj.filters
vcpkglib/vcpkglib.vcxproj.filters
<ClInclude Include="..\include\vcpkg\userconfig.h">
<Filter>Header Files\vcpkg</Filter>
</ClInclude>
+ <ClInclude Include="..\include\vcpkg\base\stringliteral.h">
+ <Filter>Header Files\vcpkg\base</Filter>
+ </ClInclude>
</ItemGroup>
</Project>
\ No newline at end of file

Add new struct: StringLiteral