Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

compilation fails under gcc > 12 #75

Open
joelb123 opened this issue Jul 10, 2023 · 1 comment
Open

compilation fails under gcc > 12 #75

joelb123 opened this issue Jul 10, 2023 · 1 comment

Comments

@joelb123
Copy link

Works under gcc-12.3.1_p20230623
First failure under gcc-13.1.1_p20230527 as below:

x86_64-pc-linux-gnu-g++ -IlibBigWig -Ibonsai/include -Ibonsai -Ibonsai/hll -Ibonsai/hll/include -Ibonsai -I. -Isrc -Ifmt/include -O3 -march=native -fopenmp -pipe -DD2_CACHE_SIZE=4194304 -std=c++20 -Wall -Wextra -Wno-unused-function -Wno-char-subscripts -pedantic -Wno-array-bounds src/emitrect.cpp -c -o src/emitrect.o -DNOCURL -DDASHING2_VERSION="v2.1.16-1-gbf82" -DFMT_HEADER_ONLY -DNDEBUG -flto -O3
src/emitrect.cpp: In function ‘void dashing2::print_tabs(size_t, std::back_insert_iterator<fmt::v8::basic_memory_buffer >&)’:
src/emitrect.cpp:51:28: error: call of overloaded ‘format_to(std::back_insert_iterator<fmt::v8::basic_memory_buffer >&, const std::string_view&)’ is ambiguous
51 | for(;n > 256; format_to(biof, tabstr), n -= 256);
| ~~~~~~~~~^~~~~~~~~~~~~~
In file included from fmt/include/fmt/format.h:44,
from src/emitrect.cpp:2:
fmt/include/fmt/core.h:3073:17: note: candidate: ‘OutputIt fmt::v8::format_to(OutputIt, format_string<T ...>, T&& ...) [with OutputIt = std::back_insert_iterator<basic_memory_buffer >; T = {}; typename std::enable_if<detail::is_output_iterator<OutputIt, char>::value, int>::type = 0; format_string<T ...> = basic_format_string]’
3073 | FMT_INLINE auto format_to(OutputIt out, format_string<T...> fmt, T&&... args)
| ^~~~~~~~~
In file included from /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/bits/chrono_io.h:39,
from /usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/chrono:3330,
from bonsai/include/bonsai/util.h:4,
from bonsai/include/bonsai/kmerutil.h:7,
from bonsai/include/bonsai/entropy.h:3,
from bonsai/include/bonsai/encoder.h:10,
from src/d2.h:11,
from src/cmp_main.h:3,
from src/emitrect.cpp:1:
/usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/format:3745:5: note: candidate: ‘_Out std::format_to(_Out, format_string<_Args ...>, _Args&& ...) [with _Out = back_insert_iterator<fmt::v8::basic_memory_buffer >; _Args = {}; format_string<_Args ...> = basic_format_string]’
3745 | format_to(_Out __out, format_string<_Args...> __fmt, _Args&&... __args)
| ^~~~~~~~~
src/emitrect.cpp:53:14: error: call of overloaded ‘format_to(std::back_insert_iterator<fmt::v8::basic_memory_buffer >&, const char [3], const std::basic_string_view&)’ is ambiguous
53 | format_to(biof, "{}", substr);
| ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
fmt/include/fmt/core.h:3073:17: note: candidate: ‘OutputIt fmt::v8::format_to(OutputIt, format_string<T ...>, T&& ...) [with OutputIt = std::back_insert_iterator<basic_memory_buffer >; T = {const std::basic_string_view<char, std::char_traits >&}; typename std::enable_if<detail::is_output_iterator<OutputIt, char>::value, int>::type = 0; format_string<T ...> = basic_format_string<char, const std::basic_string_view<char, std::char_traits >&>]’
3073 | FMT_INLINE auto format_to(OutputIt out, format_string<T...> fmt, T&&... args)
| ^~~~~~~~~
/usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/format:3745:5: note: candidate: ‘_Out std::format_to(_Out, format_string<_Args ...>, _Args&& ...) [with _Out = back_insert_iterator<fmt::v8::basic_memory_buffer >; _Args = {const basic_string_view<char, char_traits >&}; format_string<_Args ...> = basic_format_string<char, const basic_string_view<char, char_traits >&>]’
3745 | format_to(_Out __out, format_string<_Args...> __fmt, _Args&&... __args)
| ^~~~~~~~~
src/emitrect.cpp: In function ‘void dashing2::emit_rectangular(const Dashing2DistOptions&, const SketchingResult&)’:
src/emitrect.cpp:351:30: error: call of overloaded ‘format_to(std::back_insert_iterator<fmt::v8::basic_memory_buffer >&, const char [3], std::string&)’ is ambiguous
351 | format_to(biof, "{}", fn);
| ~~~~~~~~~^~~~~~~~~~~~~~~~
fmt/include/fmt/core.h:3073:17: note: candidate: ‘OutputIt fmt::v8::format_to(OutputIt, format_string<T ...>, T&& ...) [with OutputIt = std::back_insert_iterator<basic_memory_buffer >; T = {std::__cxx11::basic_string<char, std::char_traits, std::allocator >&}; typename std::enable_if<detail::is_output_iterator<OutputIt, char>::value, int>::type = 0; format_string<T ...> = basic_format_string<char, std::__cxx11::basic_string<char, std::char_traits, std::allocator >&>]’
3073 | FMT_INLINE auto format_to(OutputIt out, format_string<T...> fmt, T&&... args)
| ^~~~~~~~~
/usr/lib/gcc/x86_64-pc-linux-gnu/13/include/g++-v13/format:3745:5: note: candidate: ‘_Out std::format_to(_Out, format_string<_Args ...>, _Args&& ...) [with _Out = back_insert_iterator<fmt::v8::basic_memory_buffer >; _Args = {__cxx11::basic_string<char, char_traits, allocator >&}; format_string<_Args ...> = basic_format_string<char, __cxx11::basic_string<char, char_traits, allocator >&>]’
3745 | format_to(_Out __out, format_string<_Args...> __fmt, _Args&&... __args)
| ^~~~~~~~~
make: *** [Makefile:117: src/emitrect.o] Error 1

@dnbaker
Copy link
Owner

dnbaker commented Jul 11, 2023

Hi Joel,

Thanks for this issue! I was able to reproduce it with gcc-13, and it was a quick fix. I've merged it in here.

Happy to help with any more issues.

Best,

Daniel

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants