biocpp / biocpp-io

BioC++ Input/Output library
https://biocpp.github.io
BSD 3-Clause "New" or "Revised" License
8 stars 5 forks source link

Read and write VCF with changing some fields. #63

Open Irallia opened 1 year ago

Irallia commented 1 year ago
#include <bio/var_io/reader.hpp>
#include <bio/var_io/writer.hpp>
...
using namespace std::literals;

/*! \brief Fill ALT fields in VCF with SV types.
 *
 * \param[in] args - command line arguments:\n
 *                   **args.input_file_path** - Mason VCF input file, path to the VCF file\n
 *                   **args.output_file_path** output file - path for the VCF file - *default: standard output*\n
 *
 * \details Takes SVTYPE of SV InDels and fills their ALT fields.
 */
void convert_vcf(cmd_arguments const & args)
{
    bio::var_io::reader reader{args.input_file_path};
    bio::var_io::writer writer{args.output_file_path};

    for (auto & rec : reader) {
            // pos=0 limits the search to the prefix
        if (rec.id().rfind("sim_sv_indel", 0) == 0 && rec.info().front().id == "SVTYPE") {
            if (rec.info().front().value == "INS"sv) {
                rec.alt() = {"<INS>"};
            } else {
                rec.alt() = {"<DEL>"};
            }
            writer.push_back(rec);
        }
    }
}

fails with the following error:

```bash Consolidate compiler generated dependencies of target MasonVcfConverter [ 94%] Building CXX object src/CMakeFiles/MasonVcfConverter.dir/__/test/benchmark/simulation/mason_vcf_converter.cpp.o .../test/benchmark/simulation/mason_vcf_converter.cpp: In function 'void convert_vcf(const cmd_arguments&)': .../test/benchmark/simulation/mason_vcf_converter.cpp:61:46: error: no match for 'operator==' (operand types are 'bio::var_io::info_element_value_type' {aka 'std::variant >, std::vector >, std::vector >, std::vector >, std::vector >, std::vector >, std::allocator > > >, bool>'} and 'std::basic_string_view') 61 | if (rec.info().front().value == "INS"sv) { | ~~~~~~~~~~~~~~~~~~~~~~~~ ^~ ~~~~~~~ | | | | | std::basic_string_view | bio::var_io::info_element_value_type {aka std::variant >, std::vector >, std::vector >, std::vector >, std::vector >, std::vector >, std::allocator > > >, bool>} In file included from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/x86_64-apple-darwin19/bits/c++allocator.h:33, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/allocator.h:46, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/string:41, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/stdexcept:39, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/system_error:41, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/fs_fwd.h:35, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/filesystem:44, from .../lib/b.i.o./include/bio/var_io/reader.hpp:16, from .../test/benchmark/simulation/mason_vcf_converter.cpp:1: /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/ext/new_allocator.h:183:9: note: candidate: 'template constexpr bool __gnu_cxx::operator==(const __gnu_cxx::new_allocator >&, const __gnu_cxx::new_allocator<_Tp>&)' (reversed) 183 | operator==(const new_allocator&, const new_allocator<_Up>&) | ^~~~~~~~ /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/ext/new_allocator.h:183:9: note: template argument deduction/substitution failed: .../test/benchmark/simulation/mason_vcf_converter.cpp:61:49: note: 'bio::var_io::info_element_value_type' {aka 'std::variant >, std::vector >, std::vector >, std::vector >, std::vector >, std::vector >, std::allocator > > >, bool>'} is not derived from 'const __gnu_cxx::new_allocator<_Tp>' 61 | if (rec.info().front().value == "INS"sv) { | ^~~~~~~ In file included from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/x86_64-apple-darwin19/bits/c++allocator.h:33, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/allocator.h:46, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/string:41, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/stdexcept:39, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/system_error:41, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/fs_fwd.h:35, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/filesystem:44, from .../lib/b.i.o./include/bio/var_io/reader.hpp:16, from .../test/benchmark/simulation/mason_vcf_converter.cpp:1: /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/ext/new_allocator.h:183:9: note: candidate: 'template constexpr bool __gnu_cxx::operator==(const __gnu_cxx::new_allocator&, const __gnu_cxx::new_allocator<_Tp>&)' (reversed) 183 | operator==(const new_allocator&, const new_allocator<_Up>&) | ^~~~~~~~ /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/ext/new_allocator.h:183:9: note: template argument deduction/substitution failed: .../test/benchmark/simulation/mason_vcf_converter.cpp:61:49: note: 'bio::var_io::info_element_value_type' {aka 'std::variant >, std::vector >, std::vector >, std::vector >, std::vector >, std::vector >, std::allocator > > >, bool>'} is not derived from 'const __gnu_cxx::new_allocator<_Tp>' 61 | if (rec.info().front().value == "INS"sv) { | ^~~~~~~ In file included from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/x86_64-apple-darwin19/bits/c++allocator.h:33, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/allocator.h:46, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/string:41, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/stdexcept:39, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/system_error:41, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/fs_fwd.h:35, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/filesystem:44, from .../lib/b.i.o./include/bio/var_io/reader.hpp:16, from .../test/benchmark/simulation/mason_vcf_converter.cpp:1: /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/ext/new_allocator.h:183:9: note: candidate: 'template constexpr bool __gnu_cxx::operator==(const __gnu_cxx::new_allocator&, const __gnu_cxx::new_allocator<_Tp>&)' (reversed) 183 | operator==(const new_allocator&, const new_allocator<_Up>&) | ^~~~~~~~ /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/ext/new_allocator.h:183:9: note: template argument deduction/substitution failed: .../test/benchmark/simulation/mason_vcf_converter.cpp:61:49: note: 'bio::var_io::info_element_value_type' {aka 'std::variant >, std::vector >, std::vector >, std::vector >, std::vector >, std::vector >, std::allocator > > >, bool>'} is not derived from 'const __gnu_cxx::new_allocator<_Tp>' 61 | if (rec.info().front().value == "INS"sv) { | ^~~~~~~ In file included from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/x86_64-apple-darwin19/bits/c++allocator.h:33, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/allocator.h:46, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/string:41, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/stdexcept:39, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/system_error:41, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/fs_fwd.h:35, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/filesystem:44, from .../lib/b.i.o./include/bio/var_io/reader.hpp:16, from .../test/benchmark/simulation/mason_vcf_converter.cpp:1: /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/ext/new_allocator.h:183:9: note: candidate: 'template constexpr bool __gnu_cxx::operator==(const __gnu_cxx::new_allocator&, const __gnu_cxx::new_allocator<_Tp>&)' (reversed) 183 | operator==(const new_allocator&, const new_allocator<_Up>&) | ^~~~~~~~ /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/ext/new_allocator.h:183:9: note: template argument deduction/substitution failed: .../test/benchmark/simulation/mason_vcf_converter.cpp:61:49: note: 'bio::var_io::info_element_value_type' {aka 'std::variant >, std::vector >, std::vector >, std::vector >, std::vector >, std::vector >, std::allocator > > >, bool>'} is not derived from 'const __gnu_cxx::new_allocator<_Tp>' 61 | if (rec.info().front().value == "INS"sv) { | ^~~~~~~ In file included from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/stl_algobase.h:67, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/char_traits.h:39, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/string:40, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/stdexcept:39, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/system_error:41, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/fs_fwd.h:35, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/filesystem:44, from .../lib/b.i.o./include/bio/var_io/reader.hpp:16, from .../test/benchmark/simulation/mason_vcf_converter.cpp:1: /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/stl_iterator.h:1105:5: note: candidate: 'template requires requires(_IteratorL __lhs, _IteratorR __rhs) {{__lhs == __rhs} -> decltype(auto) [requires std::convertible_to<, bool>];} constexpr bool __gnu_cxx::operator==(const __gnu_cxx::__normal_iterator<_IteratorL, _Container>&, const __gnu_cxx::__normal_iterator<_IteratorR, _Container>&)' (reversed) 1105 | operator==(const __normal_iterator<_IteratorL, _Container>& __lhs, | ^~~~~~~~ /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/stl_iterator.h:1105:5: note: template argument deduction/substitution failed: .../test/benchmark/simulation/mason_vcf_converter.cpp:61:49: note: 'std::basic_string_view' is not derived from 'const __gnu_cxx::__normal_iterator<_IteratorL, _Container>' 61 | if (rec.info().front().value == "INS"sv) { | ^~~~~~~ In file included from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/x86_64-apple-darwin19/bits/c++allocator.h:33, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/allocator.h:46, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/string:41, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/stdexcept:39, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/system_error:41, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/fs_fwd.h:35, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/filesystem:44, from .../lib/b.i.o./include/bio/var_io/reader.hpp:16, from .../test/benchmark/simulation/mason_vcf_converter.cpp:1: /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/ext/new_allocator.h:183:9: note: candidate: 'template constexpr bool __gnu_cxx::operator==(const __gnu_cxx::new_allocator&, const __gnu_cxx::new_allocator<_Tp>&)' (reversed) 183 | operator==(const new_allocator&, const new_allocator<_Up>&) | ^~~~~~~~ /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/ext/new_allocator.h:183:9: note: template argument deduction/substitution failed: .../test/benchmark/simulation/mason_vcf_converter.cpp:61:49: note: 'bio::var_io::info_element_value_type' {aka 'std::variant >, std::vector >, std::vector >, std::vector >, std::vector >, std::vector >, std::allocator > > >, bool>'} is not derived from 'const __gnu_cxx::new_allocator<_Tp>' 61 | if (rec.info().front().value == "INS"sv) { | ^~~~~~~ In file included from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/regex:63, from .../lib/b.i.o./include/bio/format/bcf_input_handler.hpp:19, from .../lib/b.i.o./include/bio/var_io/reader.hpp:20, from .../test/benchmark/simulation/mason_vcf_converter.cpp:1: /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/regex.h:1208:5: note: candidate: 'template bool std::__cxx11::operator==(const std::__cxx11::sub_match<_BiIter>&, std::__cxx11::__sub_match_string<_Bi_iter, _Ch_traits, _Ch_alloc>&)' (reversed) 1208 | operator==(const sub_match<_Bi_iter>& __lhs, | ^~~~~~~~ /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/regex.h:1208:5: note: template argument deduction/substitution failed: .../test/benchmark/simulation/mason_vcf_converter.cpp:61:49: note: 'std::basic_string_view' is not derived from 'const std::__cxx11::sub_match<_BiIter>' 61 | if (rec.info().front().value == "INS"sv) { | ^~~~~~~ In file included from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/regex:63, from .../lib/b.i.o./include/bio/format/bcf_input_handler.hpp:19, from .../lib/b.i.o./include/bio/var_io/reader.hpp:20, from .../test/benchmark/simulation/mason_vcf_converter.cpp:1: /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/regex.h:1375:5: note: candidate: 'template bool std::__cxx11::operator==(const std::__cxx11::sub_match<_BiIter>&, const typename std::iterator_traits<_Iter>::value_type*)' (reversed) 1375 | operator==(const sub_match<_Bi_iter>& __lhs, | ^~~~~~~~ /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/regex.h:1375:5: note: template argument deduction/substitution failed: .../test/benchmark/simulation/mason_vcf_converter.cpp:61:49: note: 'std::basic_string_view' is not derived from 'const std::__cxx11::sub_match<_BiIter>' 61 | if (rec.info().front().value == "INS"sv) { | ^~~~~~~ In file included from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/regex:63, from .../lib/b.i.o./include/bio/format/bcf_input_handler.hpp:19, from .../lib/b.i.o./include/bio/var_io/reader.hpp:20, from .../test/benchmark/simulation/mason_vcf_converter.cpp:1: /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/regex.h:1547:5: note: candidate: 'template bool std::__cxx11::operator==(const std::__cxx11::sub_match<_BiIter>&, const typename std::iterator_traits<_Iter>::value_type&)' (reversed) 1547 | operator==(const sub_match<_Bi_iter>& __lhs, | ^~~~~~~~ /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/regex.h:1547:5: note: template argument deduction/substitution failed: .../test/benchmark/simulation/mason_vcf_converter.cpp:61:49: note: 'std::basic_string_view' is not derived from 'const std::__cxx11::sub_match<_BiIter>' 61 | if (rec.info().front().value == "INS"sv) { | ^~~~~~~ In file included from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/stl_algobase.h:67, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/char_traits.h:39, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/string:40, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/stdexcept:39, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/system_error:41, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/fs_fwd.h:35, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/filesystem:44, from .../lib/b.i.o./include/bio/var_io/reader.hpp:16, from .../test/benchmark/simulation/mason_vcf_converter.cpp:1: /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/stl_iterator.h:494:5: note: candidate: 'template constexpr bool std::operator==(const std::reverse_iterator<_IteratorL>&, const std::reverse_iterator<_IteratorR>&) requires requires{{std::operator==::__x->base() == std::operator==::__y->base()} -> decltype(auto) [requires std::convertible_to<, bool>];}' (reversed) 494 | operator==(const reverse_iterator<_IteratorL>& __x, | ^~~~~~~~ /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/stl_iterator.h:494:5: note: template argument deduction/substitution failed: .../test/benchmark/simulation/mason_vcf_converter.cpp:61:49: note: 'std::basic_string_view' is not derived from 'const std::reverse_iterator<_IteratorL>' 61 | if (rec.info().front().value == "INS"sv) { | ^~~~~~~ In file included from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/stl_algobase.h:67, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/char_traits.h:39, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/string:40, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/stdexcept:39, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/system_error:41, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/fs_fwd.h:35, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/filesystem:44, from .../lib/b.i.o./include/bio/var_io/reader.hpp:16, from .../test/benchmark/simulation/mason_vcf_converter.cpp:1: /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/stl_iterator.h:1533:5: note: candidate: 'template constexpr bool std::operator==(const std::move_iterator<_IteratorL>&, const std::move_iterator<_IteratorR>&) requires requires{{std::operator==::__x->base() == std::operator==::__y->base()} -> decltype(auto) [requires std::convertible_to<, bool>];}' (reversed) 1533 | operator==(const move_iterator<_IteratorL>& __x, | ^~~~~~~~ /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/stl_iterator.h:1533:5: note: template argument deduction/substitution failed: .../test/benchmark/simulation/mason_vcf_converter.cpp:61:49: note: 'std::basic_string_view' is not derived from 'const std::move_iterator<_IteratorL>' 61 | if (rec.info().front().value == "INS"sv) { | ^~~~~~~ In file included from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/string:41, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/stdexcept:39, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/system_error:41, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/fs_fwd.h:35, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/filesystem:44, from .../lib/b.i.o./include/bio/var_io/reader.hpp:16, from .../test/benchmark/simulation/mason_vcf_converter.cpp:1: /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/allocator.h:230:5: note: candidate: 'template constexpr bool std::operator==(const std::allocator<_CharT>&, const std::allocator<_T2>&)' (reversed) 230 | operator==(const allocator<_T1>&, const allocator<_T2>&) | ^~~~~~~~ /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/allocator.h:230:5: note: template argument deduction/substitution failed: .../test/benchmark/simulation/mason_vcf_converter.cpp:61:49: note: 'std::basic_string_view' is not derived from 'const std::allocator<_CharT>' 61 | if (rec.info().front().value == "INS"sv) { | ^~~~~~~ In file included from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/basic_string.h:48, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/string:55, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/stdexcept:39, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/system_error:41, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/fs_fwd.h:35, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/filesystem:44, from .../lib/b.i.o./include/bio/var_io/reader.hpp:16, from .../test/benchmark/simulation/mason_vcf_converter.cpp:1: /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/string_view:540:5: note: candidate: 'constexpr bool std::operator==(std::basic_string_view<_CharT, _Traits>, std::__type_identity_t >) [with _CharT = char; _Traits = std::char_traits; std::__type_identity_t > = std::basic_string_view]' (reversed) 540 | operator==(basic_string_view<_CharT, _Traits> __x, | ^~~~~~~~ /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/string_view:541:70: note: no known conversion for argument 2 from 'bio::var_io::info_element_value_type' {aka 'std::variant >, std::vector >, std::vector >, std::vector >, std::vector >, std::vector >, std::allocator > > >, bool>'} to 'std::__type_identity_t >' {aka 'std::basic_string_view'} 541 | __type_identity_t> __y) | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~ In file included from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/string:55, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/stdexcept:39, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/system_error:41, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/fs_fwd.h:35, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/filesystem:44, from .../lib/b.i.o./include/bio/var_io/reader.hpp:16, from .../test/benchmark/simulation/mason_vcf_converter.cpp:1: /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/basic_string.h:6247:5: note: candidate: 'template bool std::operator==(const std::__cxx11::basic_string<_CharT, _Traits, _Allocator>&, const _CharT*)' (reversed) 6247 | operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs, | ^~~~~~~~ /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/basic_string.h:6247:5: note: template argument deduction/substitution failed: .../test/benchmark/simulation/mason_vcf_converter.cpp:61:49: note: 'std::basic_string_view' is not derived from 'const std::__cxx11::basic_string<_CharT, _Traits, _Allocator>' 61 | if (rec.info().front().value == "INS"sv) { | ^~~~~~~ In file included from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/unique_ptr.h:37, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/locale_conv.h:41, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/locale:43, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/fs_path.h:37, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/filesystem:45, from .../lib/b.i.o./include/bio/var_io/reader.hpp:16, from .../test/benchmark/simulation/mason_vcf_converter.cpp:1: /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/tuple:1513:5: note: candidate: 'template constexpr bool std::operator==(const std::tuple<_Tps ...>&, const std::tuple<_UTypes ...>&)' (reversed) 1513 | operator==(const tuple<_TElements...>& __t, | ^~~~~~~~ /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/tuple:1513:5: note: template argument deduction/substitution failed: .../test/benchmark/simulation/mason_vcf_converter.cpp:61:49: note: 'std::basic_string_view' is not derived from 'const std::tuple<_Tps ...>' 61 | if (rec.info().front().value == "INS"sv) { | ^~~~~~~ In file included from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/locale_conv.h:41, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/locale:43, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/fs_path.h:37, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/filesystem:45, from .../lib/b.i.o./include/bio/var_io/reader.hpp:16, from .../test/benchmark/simulation/mason_vcf_converter.cpp:1: /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/unique_ptr.h:753:5: note: candidate: 'template bool std::operator==(const std::unique_ptr<_Tp, _Dp>&, const std::unique_ptr<_Up, _Ep>&)' (reversed) 753 | operator==(const unique_ptr<_Tp, _Dp>& __x, | ^~~~~~~~ /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/unique_ptr.h:753:5: note: template argument deduction/substitution failed: .../test/benchmark/simulation/mason_vcf_converter.cpp:61:49: note: 'std::basic_string_view' is not derived from 'const std::unique_ptr<_Tp, _Dp>' 61 | if (rec.info().front().value == "INS"sv) { | ^~~~~~~ In file included from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/locale_conv.h:41, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/locale:43, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/fs_path.h:37, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/filesystem:45, from .../lib/b.i.o./include/bio/var_io/reader.hpp:16, from .../test/benchmark/simulation/mason_vcf_converter.cpp:1: /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/unique_ptr.h:760:5: note: candidate: 'template bool std::operator==(const std::unique_ptr<_Tp, _Dp>&, std::nullptr_t)' (reversed) 760 | operator==(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) noexcept | ^~~~~~~~ /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/unique_ptr.h:760:5: note: template argument deduction/substitution failed: .../test/benchmark/simulation/mason_vcf_converter.cpp:61:49: note: 'std::basic_string_view' is not derived from 'const std::unique_ptr<_Tp, _Dp>' 61 | if (rec.info().front().value == "INS"sv) { | ^~~~~~~ In file included from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/shared_ptr.h:53, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/fs_path.h:46, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/filesystem:45, from .../lib/b.i.o./include/bio/var_io/reader.hpp:16, from .../test/benchmark/simulation/mason_vcf_converter.cpp:1: /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/shared_ptr_base.h:1410:5: note: candidate: 'template bool std::operator==(const std::__shared_ptr<_Tp1, _Lp>&, const std::__shared_ptr<_Tp2, _Lp>&)' (reversed) 1410 | operator==(const __shared_ptr<_Tp1, _Lp>& __a, | ^~~~~~~~ /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/shared_ptr_base.h:1410:5: note: template argument deduction/substitution failed: .../test/benchmark/simulation/mason_vcf_converter.cpp:61:49: note: 'std::basic_string_view' is not derived from 'const std::__shared_ptr<_Tp1, _Lp>' 61 | if (rec.info().front().value == "INS"sv) { | ^~~~~~~ In file included from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/shared_ptr.h:53, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/fs_path.h:46, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/filesystem:45, from .../lib/b.i.o./include/bio/var_io/reader.hpp:16, from .../test/benchmark/simulation/mason_vcf_converter.cpp:1: /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/shared_ptr_base.h:1416:5: note: candidate: 'template bool std::operator==(const std::__shared_ptr<_Tp, _Lp>&, std::nullptr_t)' (reversed) 1416 | operator==(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept | ^~~~~~~~ /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/shared_ptr_base.h:1416:5: note: template argument deduction/substitution failed: .../test/benchmark/simulation/mason_vcf_converter.cpp:61:49: note: 'std::basic_string_view' is not derived from 'const std::__shared_ptr<_Tp, _Lp>' 61 | if (rec.info().front().value == "INS"sv) { | ^~~~~~~ In file included from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/fs_path.h:46, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/filesystem:45, from .../lib/b.i.o./include/bio/var_io/reader.hpp:16, from .../test/benchmark/simulation/mason_vcf_converter.cpp:1: /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/shared_ptr.h:437:5: note: candidate: 'template bool std::operator==(const std::shared_ptr<_Tp>&, const std::shared_ptr<_Tp>&)' (reversed) 437 | operator==(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept | ^~~~~~~~ /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/shared_ptr.h:437:5: note: template argument deduction/substitution failed: .../test/benchmark/simulation/mason_vcf_converter.cpp:61:49: note: 'std::basic_string_view' is not derived from 'const std::shared_ptr<_Tp>' 61 | if (rec.info().front().value == "INS"sv) { | ^~~~~~~ In file included from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/fs_path.h:46, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/filesystem:45, from .../lib/b.i.o./include/bio/var_io/reader.hpp:16, from .../test/benchmark/simulation/mason_vcf_converter.cpp:1: /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/shared_ptr.h:443:5: note: candidate: 'template bool std::operator==(const std::shared_ptr<_Tp>&, std::nullptr_t)' (reversed) 443 | operator==(const shared_ptr<_Tp>& __a, nullptr_t) noexcept | ^~~~~~~~ /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/shared_ptr.h:443:5: note: template argument deduction/substitution failed: .../test/benchmark/simulation/mason_vcf_converter.cpp:61:49: note: 'std::basic_string_view' is not derived from 'const std::shared_ptr<_Tp>' 61 | if (rec.info().front().value == "INS"sv) { | ^~~~~~~ In file included from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/ranges:44, from .../lib/b.i.o./include/bio/detail/views_eager_split.hpp:18, from .../lib/b.i.o./include/bio/detail/index_tabix.hpp:16, from .../lib/b.i.o./include/bio/var_io/reader.hpp:18, from .../test/benchmark/simulation/mason_vcf_converter.cpp:1: /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/optional:1038:5: note: candidate: 'template constexpr std::__optional_eq_t<_Tp, _Up> std::operator==(const std::optional<_Tp>&, const std::optional<_Up>&)' (reversed) 1038 | operator==(const optional<_Tp>& __lhs, const optional<_Up>& __rhs) | ^~~~~~~~ /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/optional:1038:5: note: template argument deduction/substitution failed: .../test/benchmark/simulation/mason_vcf_converter.cpp:61:49: note: 'std::basic_string_view' is not derived from 'const std::optional<_Tp>' 61 | if (rec.info().front().value == "INS"sv) { | ^~~~~~~ In file included from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/ranges:44, from .../lib/b.i.o./include/bio/detail/views_eager_split.hpp:18, from .../lib/b.i.o./include/bio/detail/index_tabix.hpp:16, from .../lib/b.i.o./include/bio/var_io/reader.hpp:18, from .../test/benchmark/simulation/mason_vcf_converter.cpp:1: /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/optional:1098:5: note: candidate: 'template constexpr bool std::operator==(const std::optional<_Tp>&, std::nullopt_t)' (reversed) 1098 | operator==(const optional<_Tp>& __lhs, nullopt_t) noexcept | ^~~~~~~~ /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/optional:1098:5: note: template argument deduction/substitution failed: .../test/benchmark/simulation/mason_vcf_converter.cpp:61:49: note: 'std::basic_string_view' is not derived from 'const std::optional<_Tp>' 61 | if (rec.info().front().value == "INS"sv) { | ^~~~~~~ In file included from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/ranges:44, from .../lib/b.i.o./include/bio/detail/views_eager_split.hpp:18, from .../lib/b.i.o./include/bio/detail/index_tabix.hpp:16, from .../lib/b.i.o./include/bio/var_io/reader.hpp:18, from .../test/benchmark/simulation/mason_vcf_converter.cpp:1: /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/optional:1166:5: note: candidate: 'template constexpr std::__optional_eq_t<_Tp, _Up> std::operator==(const std::optional<_Tp>&, const _Up&)' (reversed) 1166 | operator==(const optional<_Tp>& __lhs, const _Up& __rhs) | ^~~~~~~~ /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/optional:1166:5: note: template argument deduction/substitution failed: .../test/benchmark/simulation/mason_vcf_converter.cpp:61:49: note: 'std::basic_string_view' is not derived from 'const std::optional<_Tp>' 61 | if (rec.info().front().value == "INS"sv) { | ^~~~~~~ In file included from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/ranges:44, from .../lib/b.i.o./include/bio/detail/views_eager_split.hpp:18, from .../lib/b.i.o./include/bio/detail/index_tabix.hpp:16, from .../lib/b.i.o./include/bio/var_io/reader.hpp:18, from .../test/benchmark/simulation/mason_vcf_converter.cpp:1: /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/optional:1172:5: note: candidate: 'template constexpr std::__optional_eq_t<_Up, _Tp> std::operator==(const _Up&, const std::optional<_Tp>&)' (reversed) 1172 | operator==(const _Up& __lhs, const optional<_Tp>& __rhs) | ^~~~~~~~ /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/optional:1172:5: note: template argument deduction/substitution failed: .../test/benchmark/simulation/mason_vcf_converter.cpp:61:49: note: 'bio::var_io::info_element_value_type' {aka 'std::variant >, std::vector >, std::vector >, std::vector >, std::vector >, std::vector >, std::allocator > > >, bool>'} is not derived from 'const std::optional<_Tp>' 61 | if (rec.info().front().value == "INS"sv) { | ^~~~~~~ In file included from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/functional:59, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/pstl/glue_algorithm_defs.h:13, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/algorithm:74, from .../lib/b.i.o./include/bio/stream/detail/fast_streambuf_iterator.hpp:18, from .../lib/b.i.o./include/bio/detail/index_tabix.hpp:18, from .../lib/b.i.o./include/bio/var_io/reader.hpp:18, from .../test/benchmark/simulation/mason_vcf_converter.cpp:1: /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/std_function.h:688:5: note: candidate: 'template bool std::operator==(const std::function<_Res(_ArgTypes ...)>&, std::nullptr_t)' (reversed) 688 | operator==(const function<_Res(_Args...)>& __f, nullptr_t) noexcept | ^~~~~~~~ /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/std_function.h:688:5: note: template argument deduction/substitution failed: .../test/benchmark/simulation/mason_vcf_converter.cpp:61:49: note: 'std::basic_string_view' is not derived from 'const std::function<_Res(_ArgTypes ...)>' 61 | if (rec.info().front().value == "INS"sv) { | ^~~~~~~ In file included from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/fs_fwd.h:35, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/filesystem:44, from .../lib/b.i.o./include/bio/var_io/reader.hpp:16, from .../test/benchmark/simulation/mason_vcf_converter.cpp:1: /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/system_error:351:3: note: candidate: 'bool std::operator==(const std::error_code&, const std::error_condition&' (reversed) 351 | operator==(const error_code& __lhs, const error_condition& __rhs) noexcept | ^~~~~~~~ /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/system_error:351:32: note: no known conversion for argument 1 from 'std::basic_string_view' to 'const std::error_code&' 351 | operator==(const error_code& __lhs, const error_condition& __rhs) noexcept | ~~~~~~~~~~~~~~~~~~^~~~~ In file included from .../lib/b.i.o./include/bio/detail/reader_base.hpp:20, from .../lib/b.i.o./include/bio/var_io/reader.hpp:19, from .../test/benchmark/simulation/mason_vcf_converter.cpp:1: /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/variant:1223:3: note: candidate: 'template constexpr bool std::operator==(const std::variant<_Types ...>&, const std::variant<_Types ...>&)' 1223 | _VARIANT_RELATION_FUNCTION_TEMPLATE(==, equal) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/variant:1223:3: note: template argument deduction/substitution failed: .../test/benchmark/simulation/mason_vcf_converter.cpp:61:49: note: 'std::basic_string_view' is not derived from 'const std::variant<_Types ...>' 61 | if (rec.info().front().value == "INS"sv) { | ^~~~~~~ In file included from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/regex:63, from .../lib/b.i.o./include/bio/format/bcf_input_handler.hpp:19, from .../lib/b.i.o./include/bio/var_io/reader.hpp:20, from .../test/benchmark/simulation/mason_vcf_converter.cpp:1: /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/regex.h:1037:5: note: candidate: 'template bool std::__cxx11::operator==(const std::__cxx11::sub_match<_BiIter>&, const std::__cxx11::sub_match<_BiIter>&)' 1037 | operator==(const sub_match<_BiIter>& __lhs, const sub_match<_BiIter>& __rhs) | ^~~~~~~~ /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/regex.h:1037:5: note: template argument deduction/substitution failed: .../test/benchmark/simulation/mason_vcf_converter.cpp:61:49: note: 'bio::var_io::info_element_value_type' {aka 'std::variant >, std::vector >, std::vector >, std::vector >, std::vector >, std::vector >, std::allocator > > >, bool>'} is not derived from 'const std::__cxx11::sub_match<_BiIter>' 61 | if (rec.info().front().value == "INS"sv) { | ^~~~~~~ In file included from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/regex:63, from .../lib/b.i.o./include/bio/format/bcf_input_handler.hpp:19, from .../lib/b.i.o./include/bio/var_io/reader.hpp:20, from .../test/benchmark/simulation/mason_vcf_converter.cpp:1: /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/regex.h:2103:5: note: candidate: 'template bool std::__cxx11::operator==(const std::__cxx11::match_results<_BiIter, _Alloc>&, const std::__cxx11::match_results<_BiIter, _Alloc>&)' 2103 | operator==(const match_results<_Bi_iter, _Alloc>& __m1, | ^~~~~~~~ /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/regex.h:2103:5: note: template argument deduction/substitution failed: .../test/benchmark/simulation/mason_vcf_converter.cpp:61:49: note: 'bio::var_io::info_element_value_type' {aka 'std::variant >, std::vector >, std::vector >, std::vector >, std::vector >, std::vector >, std::allocator > > >, bool>'} is not derived from 'const std::__cxx11::match_results<_BiIter, _Alloc>' 61 | if (rec.info().front().value == "INS"sv) { | ^~~~~~~ In file included from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/set:62, from .../lib/seqan3/submodules/sharg-parser/include/sharg/parser.hpp:15, from .../test/benchmark/simulation/mason_vcf_converter.cpp:5: /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/stl_multiset.h:971:5: note: candidate: 'template bool std::operator==(const std::multiset<_Key, _Compare, _Allocator>&, const std::multiset<_Key, _Compare, _Allocator>&)' 971 | operator==(const multiset<_Key, _Compare, _Alloc>& __x, | ^~~~~~~~ /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/stl_multiset.h:971:5: note: template argument deduction/substitution failed: .../test/benchmark/simulation/mason_vcf_converter.cpp:61:49: note: 'bio::var_io::info_element_value_type' {aka 'std::variant >, std::vector >, std::vector >, std::vector >, std::vector >, std::vector >, std::allocator > > >, bool>'} is not derived from 'const std::multiset<_Key, _Compare, _Allocator>' 61 | if (rec.info().front().value == "INS"sv) { | ^~~~~~~ In file included from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/set:61, from .../lib/seqan3/submodules/sharg-parser/include/sharg/parser.hpp:15, from .../test/benchmark/simulation/mason_vcf_converter.cpp:5: /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/stl_set.h:985:5: note: candidate: 'template bool std::operator==(const std::set<_Key, _Compare, _Allocator>&, const std::set<_Key, _Compare, _Allocator>&)' 985 | operator==(const set<_Key, _Compare, _Alloc>& __x, | ^~~~~~~~ /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/stl_set.h:985:5: note: template argument deduction/substitution failed: .../test/benchmark/simulation/mason_vcf_converter.cpp:61:49: note: 'bio::var_io::info_element_value_type' {aka 'std::variant >, std::vector >, std::vector >, std::vector >, std::vector >, std::vector >, std::allocator > > >, bool>'} is not derived from 'const std::set<_Key, _Compare, _Allocator>' 61 | if (rec.info().front().value == "INS"sv) { | ^~~~~~~ In file included from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/map:62, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/regex:52, from .../lib/b.i.o./include/bio/format/bcf_input_handler.hpp:19, from .../lib/b.i.o./include/bio/var_io/reader.hpp:20, from .../test/benchmark/simulation/mason_vcf_converter.cpp:1: /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/stl_multimap.h:1128:5: note: candidate: 'template bool std::operator==(const std::multimap<_Key, _Tp, _Compare, _Allocator>&, const std::multimap<_Key, _Tp, _Compare, _Allocator>&)' 1128 | operator==(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, | ^~~~~~~~ /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/stl_multimap.h:1128:5: note: template argument deduction/substitution failed: .../test/benchmark/simulation/mason_vcf_converter.cpp:61:49: note: 'bio::var_io::info_element_value_type' {aka 'std::variant >, std::vector >, std::vector >, std::vector >, std::vector >, std::vector >, std::allocator > > >, bool>'} is not derived from 'const std::multimap<_Key, _Tp, _Compare, _Allocator>' 61 | if (rec.info().front().value == "INS"sv) { | ^~~~~~~ In file included from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/map:61, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/regex:52, from .../lib/b.i.o./include/bio/format/bcf_input_handler.hpp:19, from .../lib/b.i.o./include/bio/var_io/reader.hpp:20, from .../test/benchmark/simulation/mason_vcf_converter.cpp:1: /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/stl_map.h:1463:5: note: candidate: 'template bool std::operator==(const std::map<_Key, _Tp, _Compare, _Allocator>&, const std::map<_Key, _Tp, _Compare, _Allocator>&)' 1463 | operator==(const map<_Key, _Tp, _Compare, _Alloc>& __x, | ^~~~~~~~ /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/stl_map.h:1463:5: note: template argument deduction/substitution failed: .../test/benchmark/simulation/mason_vcf_converter.cpp:61:49: note: 'bio::var_io::info_element_value_type' {aka 'std::variant >, std::vector >, std::vector >, std::vector >, std::vector >, std::vector >, std::allocator > > >, bool>'} is not derived from 'const std::map<_Key, _Tp, _Compare, _Allocator>' 61 | if (rec.info().front().value == "INS"sv) { | ^~~~~~~ In file included from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/stack:61, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/regex:47, from .../lib/b.i.o./include/bio/format/bcf_input_handler.hpp:19, from .../lib/b.i.o./include/bio/var_io/reader.hpp:20, from .../test/benchmark/simulation/mason_vcf_converter.cpp:1: /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/stl_stack.h:319:5: note: candidate: 'template bool std::operator==(const std::stack<_Tp, _Seq>&, const std::stack<_Tp, _Seq>&)' 319 | operator==(const stack<_Tp, _Seq>& __x, const stack<_Tp, _Seq>& __y) | ^~~~~~~~ /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/stl_stack.h:319:5: note: template argument deduction/substitution failed: .../test/benchmark/simulation/mason_vcf_converter.cpp:61:49: note: 'bio::var_io::info_element_value_type' {aka 'std::variant >, std::vector >, std::vector >, std::vector >, std::vector >, std::vector >, std::allocator > > >, bool>'} is not derived from 'const std::stack<_Tp, _Seq>' 61 | if (rec.info().front().value == "INS"sv) { | ^~~~~~~ In file included from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/deque:67, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/stack:60, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/regex:47, from .../lib/b.i.o./include/bio/format/bcf_input_handler.hpp:19, from .../lib/b.i.o./include/bio/var_io/reader.hpp:20, from .../test/benchmark/simulation/mason_vcf_converter.cpp:1: /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/stl_deque.h:2246:5: note: candidate: 'template bool std::operator==(const std::deque<_Tp, _Alloc>&, const std::deque<_Tp, _Alloc>&)' 2246 | operator==(const deque<_Tp, _Alloc>& __x, const deque<_Tp, _Alloc>& __y) | ^~~~~~~~ /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/stl_deque.h:2246:5: note: template argument deduction/substitution failed: .../test/benchmark/simulation/mason_vcf_converter.cpp:61:49: note: 'bio::var_io::info_element_value_type' {aka 'std::variant >, std::vector >, std::vector >, std::vector >, std::vector >, std::vector >, std::allocator > > >, bool>'} is not derived from 'const std::deque<_Tp, _Alloc>' 61 | if (rec.info().front().value == "INS"sv) { | ^~~~~~~ In file included from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/iosfwd:40, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/system_error:40, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/fs_fwd.h:35, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/filesystem:44, from .../lib/b.i.o./include/bio/var_io/reader.hpp:16, from .../test/benchmark/simulation/mason_vcf_converter.cpp:1: /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/postypes.h:222:5: note: candidate: 'template bool std::operator==(const std::fpos<_StateT>&, const std::fpos<_StateT>&)' 222 | operator==(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs) | ^~~~~~~~ /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/postypes.h:222:5: note: template argument deduction/substitution failed: .../test/benchmark/simulation/mason_vcf_converter.cpp:61:49: note: 'bio::var_io::info_element_value_type' {aka 'std::variant >, std::vector >, std::vector >, std::vector >, std::vector >, std::vector >, std::allocator > > >, bool>'} is not derived from 'const std::fpos<_StateT>' 61 | if (rec.info().front().value == "INS"sv) { | ^~~~~~~ In file included from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/stl_algobase.h:64, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/char_traits.h:39, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/string:40, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/stdexcept:39, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/system_error:41, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/fs_fwd.h:35, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/filesystem:44, from .../lib/b.i.o./include/bio/var_io/reader.hpp:16, from .../test/benchmark/simulation/mason_vcf_converter.cpp:1: /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/stl_pair.h:466:5: note: candidate: 'template constexpr bool std::operator==(const std::pair<_T1, _T2>&, const std::pair<_T1, _T2>&)' 466 | operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) | ^~~~~~~~ /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/stl_pair.h:466:5: note: template argument deduction/substitution failed: .../test/benchmark/simulation/mason_vcf_converter.cpp:61:49: note: 'bio::var_io::info_element_value_type' {aka 'std::variant >, std::vector >, std::vector >, std::vector >, std::vector >, std::vector >, std::allocator > > >, bool>'} is not derived from 'const std::pair<_T1, _T2>' 61 | if (rec.info().front().value == "INS"sv) { | ^~~~~~~ In file included from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/basic_string.h:48, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/string:55, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/stdexcept:39, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/system_error:41, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/fs_fwd.h:35, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/filesystem:44, from .../lib/b.i.o./include/bio/var_io/reader.hpp:16, from .../test/benchmark/simulation/mason_vcf_converter.cpp:1: /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/string_view:534:5: note: candidate: 'template constexpr bool std::operator==(std::basic_string_view<_CharT, _Traits>, std::basic_string_view<_CharT, _Traits>)' 534 | operator==(basic_string_view<_CharT, _Traits> __x, | ^~~~~~~~ /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/string_view:534:5: note: template argument deduction/substitution failed: .../test/benchmark/simulation/mason_vcf_converter.cpp:61:49: note: 'std::variant >, std::vector >, std::vector >, std::vector >, std::vector >, std::vector >, std::allocator > > >, bool>' is not derived from 'std::basic_string_view<_CharT, _Traits>' 61 | if (rec.info().front().value == "INS"sv) { | ^~~~~~~ In file included from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/basic_string.h:48, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/string:55, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/stdexcept:39, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/system_error:41, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/fs_fwd.h:35, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/filesystem:44, from .../lib/b.i.o./include/bio/var_io/reader.hpp:16, from .../test/benchmark/simulation/mason_vcf_converter.cpp:1: /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/string_view:540:5: note: candidate: 'template constexpr bool std::operator==(std::basic_string_view<_CharT, _Traits>, std::__type_identity_t >)' 540 | operator==(basic_string_view<_CharT, _Traits> __x, | ^~~~~~~~ /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/string_view:540:5: note: template argument deduction/substitution failed: .../test/benchmark/simulation/mason_vcf_converter.cpp:61:49: note: 'std::variant >, std::vector >, std::vector >, std::vector >, std::vector >, std::vector >, std::allocator > > >, bool>' is not derived from 'std::basic_string_view<_CharT, _Traits>' 61 | if (rec.info().front().value == "INS"sv) { | ^~~~~~~ In file included from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/string:55, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/stdexcept:39, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/system_error:41, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/fs_fwd.h:35, from /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/filesystem:44, from .../lib/b.i.o./include/bio/var_io/reader.hpp:16, from .../test/benchmark/simulation/mason_vcf_converter.cpp:1: /usr/local/Cellar/gcc/11.2.0_3/include/c++/11/bits/basic_string.h:6225:5: note: candidate: 'template bool std::operator==(const std::__cxx11::basic_string<_CharT, _Traits, _Allocator>&, const std::__cxx11::basic_string<_CharT, _Traits, _Allocator>&)' 6225 | operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs, | ^~~~~~~~ ... make[2]: *** [src/CMakeFiles/MasonVcfConverter.dir/__/test/benchmark/simulation/mason_vcf_converter.cpp.o] Error 1 make[1]: *** [src/CMakeFiles/MasonVcfConverter.dir/all] Error 2 make: *** [all] Error 2 ```

My current solution is now:

void convert_vcf(cmd_arguments const & args)
{
    bio::var_io::reader reader{args.input_file_path};
    bio::var_io::writer writer{args.output_file_path};

    for (auto & rec : reader) {

        if (rec.id().starts_with("sim_sv_indel")) {
            for (auto & info : rec.info()) {
                if (info.id != "SVTYPE") continue;
                if(auto* s = std::get_if<std::string_view>(&info.value)) {
                    std::string alt = "<" + std::string{*s} + ">";
                    rec.alt() = {alt};
                }
            }
            writer.push_back(rec);
        } else {
            if (rec.id().rfind("sim_sv_indel", 0) == 0 ) {
                seqan3::debug_stream << rec.info().front().id << "\n";
            }
        }
    }
}
h-2 commented 1 year ago

I have double-checked this and variant<..., string_view, ...> is indeed not comparable with string_view. So if you want comparison, you would need to compare with bio::io::var_io::info_element_value_type{"INS"} which is arguably not very nice. The workaround you chose is also very valid, and probably what I would recommend, too!

However, I see another problem with the code:

            for (auto & info : rec.info()) {
                if (info.id != "SVTYPE") continue;
                if(auto* s = std::get_if<std::string_view>(&info.value)) {
                    std::string alt = "<" + std::string{*s} + ">";
                    rec.alt() = {alt};
                }
            }
            writer.push_back(rec);

I think you are using the default records, which means that alt is std::vector<std::string_view>. You are assigning a std::string to this within the inner if-statement. That string goes out-of-scope at the end of the if-statement, so the string_view is "dangling" when you push the record to the writer.

You can fix this by defining alt in the same scope that you call push_back()... but if you do bigger changes to the record, it is always recommended to create a deep record instead.

The current main-branch has easy-to-use preset for this.