From owner-freebsd-toolchain@freebsd.org Fri Oct 21 15:07:33 2016 Return-Path: Delivered-To: freebsd-toolchain@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 76BE5C1AB44 for ; Fri, 21 Oct 2016 15:07:33 +0000 (UTC) (envelope-from wjw@digiware.nl) Received: from smtp.digiware.nl (smtp.digiware.nl [IPv6:2001:4cb8:90:ffff::3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 40CD47B9; Fri, 21 Oct 2016 15:07:33 +0000 (UTC) (envelope-from wjw@digiware.nl) Received: from router.digiware.nl (localhost.digiware.nl [127.0.0.1]) by smtp.digiware.nl (Postfix) with ESMTP id 00CF12B5BB; Fri, 21 Oct 2016 17:07:30 +0200 (CEST) X-Virus-Scanned: amavisd-new at digiware.com Received: from smtp.digiware.nl ([127.0.0.1]) by router.digiware.nl (router.digiware.nl [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 7drRb6wGCc8V; Fri, 21 Oct 2016 17:07:28 +0200 (CEST) Received: from [192.168.101.51] (vpn.ecoracks.nl [176.74.240.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.digiware.nl (Postfix) with ESMTPSA id 3E3752B5BA; Fri, 21 Oct 2016 17:07:28 +0200 (CEST) Subject: Re: Seeking help with some Clang trouble, compiling ceph To: Dimitry Andric , FreeBSD Toolchain References: From: Willem Jan Withagen Message-ID: <7b6713f1-5671-bdc2-9cb5-97171146bc59@digiware.nl> Date: Fri, 21 Oct 2016 17:07:28 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit X-BeenThere: freebsd-toolchain@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Maintenance of FreeBSD's integrated toolchain List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 Oct 2016 15:07:33 -0000 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 struct denc_traits< std::vector, - typename std::enable_if::supported>::type> { + typename std::enable_if::supported != 0>::type> { typedef denc_traits traits; enum { supported = true }; @@ -831,7 +831,7 @@ struct denc_traits< template struct denc_traits< std::set, - typename std::enable_if::supported>::type> { + typename std::enable_if::supported != 0>::type> { typedef denc_traits 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