Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 1 Apr 2018 11:44:01 -0700
From:      Mark Millard <marklmi26-fbsd@yahoo.com>
To:        wjw@digiware.nl, freebsd-toolchain@freebsd.org
Subject:   Re: Looking for std::map::merge when compiling for Clang...
Message-ID:  <E77AA8D3-FE3C-4E27-AC33-9F5D4044A034@yahoo.com>

next in thread | raw e-mail | index | archive | help
Willem Jan Withagen wjw at digiware.nl wrote on
Sun Apr 1 12:19:35 UTC 2018 :

> I'm trying to compile a src file with Ceph that has been upgrade to use 
> more of the C++17 features, but it fails on a missing function:
> 
> /home/jenkins/workspace/ceph-master/src/mds/OpenFileTable.cc:349:26: 
> error: no member named 'merge' in 
> 'std::__1::map<std::__1::basic_string<char>, ceph::buffer::list, 
> std::__1::less<std::__1::basic_string<char> >, 
> std::__1::allocator<std::__1::pair<const std::__1::basic_string<char>, 
> ceph::buffer::list> > >'
>      ctl.journaled_update.merge(ctl.to_update);
>      ~~~~~~~~~~~~~~~~~~~~ ^

If you can get ahold of the text for the compile command, it would
be a good idea to send that out as additional information.

A point about clang as a standard in FreeBSD, with the system and
ports there are many alternatives. (Although having some level of
C++17 support does cut down the size of the list.)

In a C++17 context:

#include <map>

should have defined merge for std::map. The error message suggests
complete lack of a definition, rather than an unsupported type of
argument (overload mismatch) or other such.

Such might be because the compile did not indicate to use C++17
--or some other point that is outside OpenFileTable.cc . See the
command that generated the error would likely help with
identifying the proper context for fixing the issue.

===
Mark Millard
marklmi26-fbsd at yahoo.com
( dsl-only.net went
away in early 2018-Mar)









Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?E77AA8D3-FE3C-4E27-AC33-9F5D4044A034>