mirror of
https://github.com/fmtlib/fmt.git
synced 2025-12-09 18:26:57 +08:00
Passing a function pointer to fmt::ptr results in:
In file included from /home/mac/git/fmt/test/gmock/gmock.h:238,
from /home/mac/git/fmt/test/format-test.cc:31:
.../fmt/test/format-test.cc: In member function ‘virtual void FormatterTest_FormatPointer_Test::TestBody()’:
.../fmt/test/format-test.cc:1486:56: error: no matching function for call to ‘ptr(void (&)(int, double, std::__cxx11::string))’
format("{}", fmt::ptr(function_pointer_test)));
with GCC and Clang. Let's add an overload to support that usage.
Unfortunately, MSVC would
consider the overload to be ambiguous for unknown reasons:
D:\a\fmt\fmt\test\format-test.cc(1485,1): error C2668: 'fmt::v7::ptr': ambiguous call to overloaded function [D:\a\fmt\build\test\format-test.vcxproj]
D:\a\fmt\fmt\include\fmt/format.h(3742,60): message : could be 'const void *fmt::v7::ptr<void,int,double,std::string>(T (__cdecl *)(int,double,std::string))' [D:\a\fmt\build\test\format-test.vcxproj]
with
[
T=void
]
D:\a\fmt\fmt\include\fmt/format.h(3735,42): message : or 'const void *fmt::v7::ptr<void(int,double,std::string)>(T (__cdecl *))' [D:\a\fmt\build\test\format-test.vcxproj]
with
[
T=void (int,double,std::string)
]
D:\a\fmt\fmt\test\format-test.cc(1486,1): message : while trying to match the argument list '(overloaded-function)' [D:\a\fmt\build\test\format-test.vcxproj]
but luckily this means that the overload is unnecessary in that case
anyway, so we can just make it conditional.
|
||
|---|---|---|
| .. | ||
| add-subdirectory-test | ||
| compile-error-test | ||
| cuda-test | ||
| find-package-test | ||
| fuzzing | ||
| gmock | ||
| gtest | ||
| assert-test.cc | ||
| chrono-test.cc | ||
| CMakeLists.txt | ||
| color-test.cc | ||
| compile-test.cc | ||
| core-test.cc | ||
| enforce-compile-string-test.cc | ||
| format | ||
| format-impl-test.cc | ||
| format-test.cc | ||
| gmock-gtest-all.cc | ||
| gtest-extra-test.cc | ||
| gtest-extra.cc | ||
| gtest-extra.h | ||
| header-only-test2.cc | ||
| header-only-test.cc | ||
| locale-test.cc | ||
| mock-allocator.h | ||
| os-test.cc | ||
| ostream-test.cc | ||
| posix-mock-test.cc | ||
| posix-mock.h | ||
| printf-test.cc | ||
| ranges-test.cc | ||
| scan-test.cc | ||
| scan.h | ||
| std-format-test.cc | ||
| test-assert.h | ||
| test-main.cc | ||
| util.cc | ||
| util.h | ||