Seeking help with some Clang trouble, compiling ceph
Willem Jan Withagen
wjw at digiware.nl
Fri Oct 21 15:07:33 UTC 2016
On 21-10-2016 15:09, Willem Jan Withagen wrote:
> Hi,
>
> All this Ceph stuff finally used to compile under FreeBSD.
> And all testss completed correctly.
>
> But somewhere in the Ceph-tree there was a lot of template and trait
> code added/replaced.
> Problem is that this compiles under GCC, but Clang throws an error. It
> looks like it cannot select types of automagic conversion.
>
> But this template/trait stuff is too much for me to wrap my head around.
> I'm reading up a lot, but that does not yet get me anywhere.
>
> So I was wondering if anybody with more C++ knowledge would like to
> assist and give some clues as to how to fix this.
>
> The error report is at:
>
> http://cephdev.digiware.nl:8180/jenkins/job/ceph-freebsd/39/consoleFull
>
> And the ceph code can be found at:
> https://github.com/ceph/ceph
Oke, the preson responsable for the change helped to figure it out, and
it looks like the following diff helps
diff --git a/src/include/denc.h b/src/include/denc.h
index 59f7686..caa095b 100644
--- a/src/include/denc.h
+++ b/src/include/denc.h
@@ -722,7 +722,7 @@ struct denc_traits<
template<typename T>
struct denc_traits<
std::vector<T>,
- typename std::enable_if<denc_traits<T>::supported>::type> {
+ typename std::enable_if<denc_traits<T>::supported != 0>::type> {
typedef denc_traits<T> traits;
enum { supported = true };
@@ -831,7 +831,7 @@ struct denc_traits<
template<typename T>
struct denc_traits<
std::set<T>,
- typename std::enable_if<denc_traits<T>::supported>::type> {
+ typename std::enable_if<denc_traits<T>::supported != 0>::type> {
typedef denc_traits<T> traits;
enum { supported = true };
And the conclusion is that std::enable_if<> does not always like it when
the value is 'int'.
the definition of supported is:
struct denc_traits {
enum { supported = 0 };
enum { featured = false };
enum { bounded = false };
};
and values can range 0..2.
So is this a GCC liberalization, or is Clang here to picky?
Thanx,
--WjW
More information about the freebsd-toolchain
mailing list