mirror of
https://github.com/fmtlib/fmt.git
synced 2024-12-24 12:14:26 +00:00
Fix compile checks for mixing narrow and wide strings (#690)
This commit is contained in:
parent
c5ebecf7c6
commit
e8e006f4e7
@ -619,8 +619,8 @@ FMT_MAKE_VALUE(pointer_type, std::nullptr_t, const void*)
|
|||||||
// pointer cast it to "void *" or "const void *". In particular, this forbids
|
// pointer cast it to "void *" or "const void *". In particular, this forbids
|
||||||
// formatting of "[const] volatile char *" which is printed as bool by
|
// formatting of "[const] volatile char *" which is printed as bool by
|
||||||
// iostreams.
|
// iostreams.
|
||||||
template <typename T>
|
template <typename C, typename T>
|
||||||
void make_value(const T *) {
|
typed_value<C, pointer_type> make_value(const T *) {
|
||||||
static_assert(!sizeof(T), "formatting of non-void pointers is disallowed");
|
static_assert(!sizeof(T), "formatting of non-void pointers is disallowed");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,6 +10,7 @@ function (generate_source result fragment)
|
|||||||
set(${result} "
|
set(${result} "
|
||||||
#define FMT_HEADER_ONLY 1
|
#define FMT_HEADER_ONLY 1
|
||||||
#include \"fmt/posix.h\"
|
#include \"fmt/posix.h\"
|
||||||
|
#include \"fmt/ostream.h\"
|
||||||
int main() {
|
int main() {
|
||||||
${fragment}
|
${fragment}
|
||||||
}
|
}
|
||||||
@ -53,6 +54,10 @@ expect_compile_error("fmt::format(\"{}\", L'a');")
|
|||||||
# Formatting a wide string with a narrow format string is forbidden.
|
# Formatting a wide string with a narrow format string is forbidden.
|
||||||
expect_compile_error("fmt::format(\"{}\", L\"foo\");")
|
expect_compile_error("fmt::format(\"{}\", L\"foo\");")
|
||||||
|
|
||||||
|
# Formatting a narrow string with a wide format string is forbidden because
|
||||||
|
# mixing UTF-8 with UTF-16/32 can result in an invalid output.
|
||||||
|
expect_compile_error("fmt::format(L\"{}\", \"foo\");")
|
||||||
|
|
||||||
# Make sure that compiler features detected in the header
|
# Make sure that compiler features detected in the header
|
||||||
# match the features detected in CMake.
|
# match the features detected in CMake.
|
||||||
if (SUPPORTS_USER_DEFINED_LITERALS)
|
if (SUPPORTS_USER_DEFINED_LITERALS)
|
||||||
|
Loading…
Reference in New Issue
Block a user