From debbugs-submit-bounces@debbugs.gnu.org Mon Aug 24 11:23:53 2020 Received: (at submit) by debbugs.gnu.org; 24 Aug 2020 15:23:53 +0000 Received: from localhost ([127.0.0.1]:58923 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kAEK7-0005Eo-U5 for submit@debbugs.gnu.org; Mon, 24 Aug 2020 11:23:53 -0400 Received: from lists.gnu.org ([209.51.188.17]:34714) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kAClZ-0003vr-Tx for submit@debbugs.gnu.org; Mon, 24 Aug 2020 09:44:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57964) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kAClZ-0004cs-Ky for bug-guix@gnu.org; Mon, 24 Aug 2020 09:44:05 -0400 Received: from mail2-relais-roc.national.inria.fr ([192.134.164.83]:24606) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kAClV-0004pX-Ny for bug-guix@gnu.org; Mon, 24 Aug 2020 09:44:05 -0400 X-IronPort-AV: E=Sophos;i="5.76,348,1592863200"; d="scan'208,217";a="464491747" X-MGA-submission: =?us-ascii?q?MDG+LeoxqlOJf3u2orZndCLq9hEgG1Ad4D0zf7?= =?us-ascii?q?yJ2LT9gEGJR6dlV8oIHpoOGJia7QyUcd5bKO6dCc6mXnwFqpHT6wdP0R?= =?us-ascii?q?jgYLkrxoFSMt2LlQqGNO5JAq4WRjEGq/xfjYp1fjrzeNKbJBWQlpdRpy?= =?us-ascii?q?wyFguVyY6N1zp2gqb3jp2sVg=3D=3D?= Received: from zcs-store4.inria.fr ([128.93.142.31]) by mail2-relais-roc.national.inria.fr with ESMTP; 24 Aug 2020 15:43:57 +0200 Date: Mon, 24 Aug 2020 15:43:57 +0200 (CEST) From: Emmanuel Agullo To: bug-guix@gnu.org Message-ID: <109069324.10892414.1598276637610.JavaMail.zimbra@inria.fr> Subject: clang++ in a {clang-toolchain + gcc-toolchain} environment MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="=_31f9a8b4-834e-42a7-9635-94f73c30bc07" X-Originating-IP: [194.199.1.36] X-Mailer: Zimbra 8.8.15_GA_3955 (ZimbraWebClient - [unknown] (Linux)/8.8.15_GA_3953) Thread-Index: ClVmDmgjOCbN2ihQ7ZVD5U9CtKDWxg== Thread-Topic: clang++ in a {clang-toolchain + gcc-toolchain} environment Received-SPF: pass client-ip=192.134.164.83; envelope-from=emmanuel.agullo@inria.fr; helo=mail2-relais-roc.national.inria.fr X-detected-operating-system: by eggs.gnu.org: First seen = 2020/08/24 07:22:04 X-ACL-Warn: Detected OS = ??? X-Spam_score_int: -68 X-Spam_score: -6.9 X-Spam_bar: ------ X-Spam_report: (-6.9 / 5.0 requ) BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.3 (-) X-Debbugs-Envelope-To: submit X-Mailman-Approved-At: Mon, 24 Aug 2020 11:23:49 -0400 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) --=_31f9a8b4-834e-42a7-9635-94f73c30bc07 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Hello, A typical "hello world" C++ fails in an environment with both `gcc-toolchain' and `clang-toolchain', apperently due to the setup of the `CPLUS_INCLUDE_PATH' environment variable (used because of the `#include ' instruction), when compiling with `clang++'. I do not know if this is a bug or the expected behaviour. Obviously one is not likely to explicitly load an environment with both `gcc-toolchain' and `clang-toolchain' but migth do so implictly (and possibly not being aware of it) for instance having `gcc-toolchain' globally installed and at some point loading `clang-toolchain' in an environment. Note that it is not critical at all in practice in my case, and I do not know whether it it is desirable to fix it in some way, or, maybe mention the incompatibility somewhere ( ?) if not already done so – in which case I am sorry for the noise. Please find below: 1. a simplified C++ "hello world" hello.cpp program 2. an expected g++ behaviour in a `gcc-toolchain' environment 3. an expected clang++ behaviour in a `clang-toolchain' environment 4. an environment with both `gcc-toolchain' & `clang-toolchain' - 4.1. with an expected behaviour using `g++' - 4.2. with an (expected or not?) error using `clang++' - 4.3. a (non desirable) fix of the `CPLUS_INCLUDE_PATH' (removing `/gnu/store/…/include/c++') 5. the employed channels if it may help Thanks much for the continous development and support, and once again sorry for the possible noise if this is a known expected behaviour. With best regards, Emmanuel 1 simplified (no newline) C++ "hello world" hello.cpp program ═════════════════════════════════════════════════════════════ ┌──── │ #include │ │ int main() { │ std::cout << "Hello World!"; │ return 0; │ } └──── 2 `gcc-toolchain' environment ═════════════════════════════ ┌──── │ guix environment -C --ad-hoc gcc-toolchain coreutils grep │ env | grep CPLUS_INCLUDE_PATH │ g++ hello.cpp │ ./a.out └──── ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ CPLUS_INCLUDE_PATH=/gnu/store/gsylxn8q06w6y7622nw159f3q1vvcx2i-profile/include/c++:/gnu/store/gsylxn8q06w6y7622nw159f3q1vvcx2i-profile/include Hello World! ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3 `clang-toolchain' environment ═══════════════════════════════ ┌──── │ guix environment -C --ad-hoc clang-toolchain coreutils grep │ env | grep CPLUS_INCLUDE_PATH │ clang++ hello.cpp │ ./a.out └──── ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ CPLUS_INCLUDE_PATH=/gnu/store/8qlafmilvc0g1yv8lmilpjmps3p4nrmq-profile/include Hello World! ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4 environment with both `gcc-toolchain' & `clang-toolchain' ═══════════════════════════════════════════════════════════ 4.1 compilation with `g++' ────────────────────────── `g++' in an environment with both gcc and clang toolchains is fine: ┌──── │ guix environment -C --ad-hoc gcc-toolchain clang-toolchain coreutils grep │ env | grep CPLUS_INCLUDE_PATH │ g++ hello.cpp │ ./a.out └──── ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ CPLUS_INCLUDE_PATH=/gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++:/gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include Hello World! ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.2 compilation with `clang++' (FAIL) ───────────────────────────────────── But `clang++' in the same environment (with both gcc and clang toolchains) breaks, raising the following error: ┌──── │ guix environment -C --ad-hoc gcc-toolchain clang-toolchain coreutils grep │ clang++ hello.cpp └──── Error obtained during the `clang++ hello.cpp' step: ┌──── │ In file included from hello.cpp:1: │ In file included from /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/iostream:39: │ In file included from /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/ostream:38: │ In file included from /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/ios:39: │ /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/exception:105:3: error: unknown type name '_GLIBCXX17_DEPRECATED' │ _GLIBCXX17_DEPRECATED │ ^ │ In file included from hello.cpp:1: │ In file included from /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/iostream:39: │ In file included from /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/ostream:38: │ In file included from /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/ios:39: │ In file included from /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/exception:147: │ In file included from /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/bits/exception_ptr.h:40: │ /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/new:126:1: error: unknown type name '_GLIBCXX_NODISCARD' │ _GLIBCXX_NODISCARD void* operator new(std::size_t) _GLIBCXX_THROW (std::bad_alloc) │ ^ │ /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/new:128:1: error: unknown type name '_GLIBCXX_NODISCARD' │ _GLIBCXX_NODISCARD void* operator new[](std::size_t) _GLIBCXX_THROW (std::bad_alloc) │ ^ │ /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/new:140:1: error: unknown type name '_GLIBCXX_NODISCARD' │ _GLIBCXX_NODISCARD void* operator new(std::size_t, const std::nothrow_t&) _GLIBCXX_USE_NOEXCEPT │ ^ │ /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/new:142:1: error: unknown type name '_GLIBCXX_NODISCARD' │ _GLIBCXX_NODISCARD void* operator new[](std::size_t, const std::nothrow_t&) _GLIBCXX_USE_NOEXCEPT │ ^ │ /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/new:174:1: error: unknown type name '_GLIBCXX_NODISCARD' │ _GLIBCXX_NODISCARD inline void* operator new(std::size_t, void* __p) _GLIBCXX_USE_NOEXCEPT │ ^ │ /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/new:175:10: error: cannot initialize return object of type 'int *' with an lvalue of type 'void *' │ { return __p; } │ ^~~ │ /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/new:176:1: error: unknown type name '_GLIBCXX_NODISCARD' │ _GLIBCXX_NODISCARD inline void* operator new[](std::size_t, void* __p) _GLIBCXX_USE_NOEXCEPT │ ^ │ /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/new:177:10: error: cannot initialize return object of type 'int *' with an lvalue of type 'void *' │ { return __p; } │ ^~~ │ In file included from hello.cpp:1: │ In file included from /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/iostream:39: │ In file included from /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/ostream:38: │ In file included from /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/ios:39: │ In file included from /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/exception:148: │ In file included from /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/bits/nested_exception.h:40: │ In file included from /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/bits/move.h:57: │ /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/type_traits:696:27: error: expected unqualified-id │ _GLIBCXX20_DEPRECATED("use is_standard_layout && is_trivial instead") │ ^ │ /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/type_traits:696:27: error: expected ')' │ /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/type_traits:696:26: note: to match this '(' │ _GLIBCXX20_DEPRECATED("use is_standard_layout && is_trivial instead") │ ^ │ /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/type_traits:2648:5: error: unknown type name '_GLIBCXX20_CONSTEXPR' │ _GLIBCXX20_CONSTEXPR │ ^ │ /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/type_traits:2650:5: error: no variable template matches partial specialization │ _Require<__not_<__is_tuple_like<_Tp>>, │ ^ │ /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/type_traits:2652:31: error: expected ';' at end of declaration │ is_move_assignable<_Tp>> │ ^ │ /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/type_traits:2653:10: error: unknown type name '_Tp' │ swap(_Tp&, _Tp&) │ ^ │ /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/type_traits:2653:16: error: unknown type name '_Tp' │ swap(_Tp&, _Tp&) │ ^ │ /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/type_traits:2654:51: error: use of undeclared identifier '_Tp' │ noexcept(__and_, │ ^ │ /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/type_traits:2654:55: error: expected a type │ noexcept(__and_, │ ^ │ /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/type_traits:2653:5: error: C++ requires a type specifier for all declarations │ swap(_Tp&, _Tp&) │ ^ │ fatal error: too many errors emitted, stopping now [-ferror-limit=] │ 20 errors generated. └──── 4.3 (non desirable) fix of the `CPLUS_INCLUDE_PATH' (removing `/gnu/store/.../include/c++') ─────────────────────────────────────────────────────────────────────────────────────────── For information, it is possible (but obviously in general not desirable) to fix the `CPLUS_INCLUDE_PATH' variable (removing `/gnu/store/.../include/c++'), which leads to a correct compilation (and execution). ┌──── │ guix environment -C --ad-hoc gcc-toolchain clang-toolchain coreutils grep │ export CPLUS_INCLUDE_PATH=/gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include │ clang++ hello.cpp │ ./a.out └──── ┌──── │ Hello World! └──── 5 channels ══════════ ┌──── │ guix describe --format=channels └──── ┌──── │ (list (channel │ (name 'guix-hpc) │ (url "https://gitlab.inria.fr/guix-hpc/guix-hpc.git") │ (commit │ "fa87605fe93fb85b02dad9db246299bcf223f2e0")) │ (channel │ (name 'guix-hpc-non-free) │ (url "https://gitlab.inria.fr/guix-hpc/guix-hpc-non-free.git") │ (commit │ "43d8cb72144a183aa7a93499f9c59ec0f84244b0")) │ (channel │ (name 'guix) │ (url "https://git.savannah.gnu.org/git/guix.git") │ (commit │ "c6872990b51971922f3064cba54ab752fcdc1559") │ (introduction │ (make-channel-introduction │ "9edb3f66fd807b096b48283debdcddccfea34bad" │ (openpgp-fingerprint │ "BBB0 2DDF 2CEA F6A8 0D1D E643 A2A0 6DF2 A33A 54FA"))))) └──── --=_31f9a8b4-834e-42a7-9635-94f73c30bc07 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable
Hello,

A typical "hello world" C++ f= ails in an environment with both
`gcc-toolchain' and `clang-toolchain', = apperently due to the setup of
the `CPLUS_INCLUDE_PATH' environment vari= able (used because of the
`#include <iostream>' instruction), when= compiling with `clang++'.

I do not know if this is a bug or the exp= ected behaviour. Obviously one
is not likely to explicitly load = an environment with both `gcc-toolchain'
and `clang-toolchain' b= ut migth do so implictly (and possibly not being
aware of it) for instan= ce having `gcc-toolchain' globally installed and
at some point loading `= clang-toolchain' in an environment.

Note that it is not critical at = all in practice in my case, and I do
not know whether it it is desirable= to fix it in some way, or, maybe
mention the incompatibility somewhere<= br>(<https://guix.gnu.org/manual/en/html_node/Development.html> ?) if= not
already done so =E2=80=93 in which case I am sorry for the noise.
Please find below:
1. a simplified C++ "hello world" hello.cpp pro= gram
2. an expected g++ behaviour in a `gcc-toolchain' environment
3.= an expected clang++ behaviour in a `clang-toolchain' environment
4. an = environment with both `gcc-toolchain' & `clang-toolchain'
- 4.1. wit= h an expected behaviour using `g++'
- 4.2. with an (expected or not?) er= ror using `clang++'
- 4.3. a (non desirable) fix of the `CPLUS_INCLUDE_P= ATH' (removing
  `/gnu/store/=E2=80=A6/include/c++')
5. the empl= oyed channels if it may help

Thanks much for the continous developme= nt and support, and once
again sorry for the possible noise if th= is is a known expected
behaviour.

With best regards,
Emmanuel


1 simplified (no newline) C++ "hello world" hello.cpp= program
=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90= =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90= =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90= =E2=95=90=E2=95=90=E2=95=90=E2=95=90

  =E2=94=8C=E2=94=80=E2=94= =80=E2=94=80=E2=94=80
  =E2=94=82 #include <iostream>
&nbs= p; =E2=94=82
  =E2=94=82 int main() {
  =E2=94=82 &nb= sp;   std::cout << "Hello World!";
  =E2=94=82 = ;    return 0;
  =E2=94=82 }
  =E2=94=94=E2= =94=80=E2=94=80=E2=94=80=E2=94=80


2 `gcc-toolchain' environment<= br>=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90= =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=90=E2=95=90

  =E2=94=8C=E2=94=80=E2= =94=80=E2=94=80=E2=94=80
  =E2=94=82 guix environment -C --ad-hoc g= cc-toolchain coreutils grep
  =E2=94=82 env | grep CPLUS_INCLUDE_PA= TH
  =E2=94=82 g++ hello.cpp
  =E2=94=82 ./a.out
  = =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80

  =E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2= =94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2= =94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2= =94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2= =94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2= =94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2= =94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81
   CPLUS_INCLUDE_PATH=3D/gnu/store/gsylxn8q06w6y7622nw159f= 3q1vvcx2i-profile/include/c++:/gnu/store/gsylxn8q06w6y7622nw159f3q1vvcx2i-p= rofile/include        
 &n= bsp; Hello           = ;            &n= bsp;            = ;            &n= bsp;            = ;            &n= bsp;            = ;            &n= bsp;            = ;            &n= bsp;            = ;   World!
  =E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2= =94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2= =94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2= =94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2= =94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2= =94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2= =94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81


3 `clang-too= lchain' environment
=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90= =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90

  =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80
  = =E2=94=82 guix environment -C --ad-hoc clang-toolchain coreutils grep
&n= bsp; =E2=94=82 env | grep CPLUS_INCLUDE_PATH
  =E2=94=82 clang++ he= llo.cpp
  =E2=94=82 ./a.out
  =E2=94=94=E2=94=80=E2=94=80= =E2=94=80=E2=94=80

  =E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2= =94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2= =94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2= =94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=
   CPLUS_INCLUDE_PATH=3D/gnu/store/8qlafmilvc0g1yv8lmilpjmps3= p4nrmq-profile/include        
=    Hello         &nb= sp;            =             &nb= sp;            =             &nb= sp;            =    World!
  =E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2= =94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2= =94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2= =94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=


4 environment with both `gcc-toolchain' & `clang-toolchain'=
=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90= =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90= =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90

4.1 compilation with `g++'
=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80

  = `g++' in an environment with both gcc and clang toolchains is fine:
&nbs= p; =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80
  =E2=94=82 guix e= nvironment -C --ad-hoc gcc-toolchain clang-toolchain coreutils grep
&nbs= p; =E2=94=82 env | grep CPLUS_INCLUDE_PATH
  =E2=94=82 g++ hello.cp= p
  =E2=94=82 ./a.out
  =E2=94=94=E2=94=80=E2=94=80=E2=94= =80=E2=94=80

  =E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2= =94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2= =94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2= =94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2= =94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2= =94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2= =94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81
   CPLUS_INCLUDE= _PATH=3D/gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++:/gn= u/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include   &= nbsp;    
   Hello    = ;            &n= bsp;            = ;            &n= bsp;            = ;            &n= bsp;            = ;            &n= bsp;            = ;            &n= bsp;            = ;          World!
  = =E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2= =94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2= =94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2= =94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2= =94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2= =94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2= =94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94= =81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81=E2=94=81= =E2=94=81=E2=94=81


4.2 compilation with `clang++' (FAIL)
=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80

  But `clang++' in the same envi= ronment (with both gcc and clang
  toolchains) breaks, raising the = following error:
  =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80  =E2=94=82 guix environment -C --ad-hoc gcc-toolchain clang-toolchai= n coreutils grep
  =E2=94=82 clang++ hello.cpp
  =E2=94=94= =E2=94=80=E2=94=80=E2=94=80=E2=94=80

  Error obtained during th= e `clang++ hello.cpp' step:
  =E2=94=8C=E2=94=80=E2=94=80=E2=94=80= =E2=94=80
  =E2=94=82 In file included from hello.cpp:1:
  = =E2=94=82 In file included from /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z= -profile/include/c++/iostream:39:
  =E2=94=82 In file included from= /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/ostream:38= :
  =E2=94=82 In file included from /gnu/store/3ka3a9wgx5sk6ac84nld= x7ldpxppn29z-profile/include/c++/ios:39:
  =E2=94=82 /gnu/store/3ka= 3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/exception:105:3: error: u= nknown type name '_GLIBCXX17_DEPRECATED'
  =E2=94=82   _G= LIBCXX17_DEPRECATED
  =E2=94=82   ^
  =E2=94=82 I= n file included from hello.cpp:1:
  =E2=94=82 In file included from= /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/iostream:3= 9:
  =E2=94=82 In file included from /gnu/store/3ka3a9wgx5sk6ac84nl= dx7ldpxppn29z-profile/include/c++/ostream:38:
  =E2=94=82 In file i= ncluded from /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c+= +/ios:39:
  =E2=94=82 In file included from /gnu/store/3ka3a9wgx5sk= 6ac84nldx7ldpxppn29z-profile/include/c++/exception:147:
  =E2=94=82= In file included from /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/= include/c++/bits/exception_ptr.h:40:
  =E2=94=82 /gnu/store/3ka3a9w= gx5sk6ac84nldx7ldpxppn29z-profile/include/c++/new:126:1: error: unknown typ= e name '_GLIBCXX_NODISCARD'
  =E2=94=82 _GLIBCXX_NODISCARD void* op= erator new(std::size_t) _GLIBCXX_THROW (std::bad_alloc)
  =E2=94=82= ^
  =E2=94=82 /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/= include/c++/new:128:1: error: unknown type name '_GLIBCXX_NODISCARD'
&nb= sp; =E2=94=82 _GLIBCXX_NODISCARD void* operator new[](std::size_t) _GLIBCXX= _THROW (std::bad_alloc)
  =E2=94=82 ^
  =E2=94=82 /gnu/stor= e/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/new:140:1: error: un= known type name '_GLIBCXX_NODISCARD'
  =E2=94=82 _GLIBCXX_NODISCARD= void* operator new(std::size_t, const std::nothrow_t&) _GLIBCXX_USE_NO= EXCEPT
  =E2=94=82 ^
  =E2=94=82 /gnu/store/3ka3a9wgx5sk6ac= 84nldx7ldpxppn29z-profile/include/c++/new:142:1: error: unknown type name '= _GLIBCXX_NODISCARD'
  =E2=94=82 _GLIBCXX_NODISCARD void* operator n= ew[](std::size_t, const std::nothrow_t&) _GLIBCXX_USE_NOEXCEPT
 = ; =E2=94=82 ^
  =E2=94=82 /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn2= 9z-profile/include/c++/new:174:1: error: unknown type name '_GLIBCXX_NODISC= ARD'
  =E2=94=82 _GLIBCXX_NODISCARD inline void* operator new(std::= size_t, void* __p) _GLIBCXX_USE_NOEXCEPT
  =E2=94=82 ^
  = =E2=94=82 /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/n= ew:175:10: error: cannot initialize return object of type 'int *' with an l= value of type 'void *'
  =E2=94=82 { return __p; }
  =E2=94= =82          ^~~
  =E2= =94=82 /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/new:= 176:1: error: unknown type name '_GLIBCXX_NODISCARD'
  =E2=94=82 _G= LIBCXX_NODISCARD inline void* operator new[](std::size_t, void* __p) _GLIBC= XX_USE_NOEXCEPT
  =E2=94=82 ^
  =E2=94=82 /gnu/store/3ka3a9= wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/new:177:10: error: cannot in= itialize return object of type 'int *' with an lvalue of type 'void *'
&= nbsp; =E2=94=82 { return __p; }
  =E2=94=82    =       ^~~
  =E2=94=82 In file included fro= m hello.cpp:1:
  =E2=94=82 In file included from /gnu/store/3ka3a9w= gx5sk6ac84nldx7ldpxppn29z-profile/include/c++/iostream:39:
  =E2=94= =82 In file included from /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profi= le/include/c++/ostream:38:
  =E2=94=82 In file included from /gnu/s= tore/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/ios:39:
 = =E2=94=82 In file included from /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29= z-profile/include/c++/exception:148:
  =E2=94=82 In file included f= rom /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/bits/ne= sted_exception.h:40:
  =E2=94=82 In file included from /gnu/store/3= ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/bits/move.h:57:
&nbs= p; =E2=94=82 /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c+= +/type_traits:696:27: error: expected unqualified-id
  =E2=94=82&nb= sp;    _GLIBCXX20_DEPRECATED("use is_standard_layout &&a= mp; is_trivial instead")
  =E2=94=82     &= nbsp;           &nbs= p;         ^
  =E2=94=82 /g= nu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/type_traits:6= 96:27: error: expected ')'
  =E2=94=82 /gnu/store/3ka3a9wgx5sk6ac84= nldx7ldpxppn29z-profile/include/c++/type_traits:696:26: note: to match this= '('
  =E2=94=82     _GLIBCXX20_DEPRECATED("use= is_standard_layout && is_trivial instead")
  =E2=94=82&nbs= p;            &= nbsp;            ^  =E2=94=82 /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/incl= ude/c++/type_traits:2648:5: error: unknown type name '_GLIBCXX20_CONSTEXPR'=
  =E2=94=82     _GLIBCXX20_CONSTEXPR
 = =E2=94=82     ^
  =E2=94=82 /gnu/store/3ka3a9w= gx5sk6ac84nldx7ldpxppn29z-profile/include/c++/type_traits:2650:5: error: no= variable template matches partial specialization
  =E2=94=82 =     _Require<__not_<__is_tuple_like<_Tp>>,  =E2=94=82     ^
  =E2=94=82 /gnu/store/= 3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/type_traits:2652:31: e= rror: expected ';' at end of declaration
  =E2=94=82  &nb= sp;           is_move_ass= ignable<_Tp>>
  =E2=94=82     &nb= sp;            =             &nb= sp;       ^
  =E2=94=82 /gnu/store/3k= a3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/type_traits:2653:10: err= or: unknown type name '_Tp'
  =E2=94=82     swa= p(_Tp&, _Tp&)
  =E2=94=82     &nbs= p;    ^
  =E2=94=82 /gnu/store/3ka3a9wgx5sk6ac84nldx= 7ldpxppn29z-profile/include/c++/type_traits:2653:16: error: unknown type na= me '_Tp'
  =E2=94=82     swap(_Tp&, _Tp&= ;)
  =E2=94=82         = ;       ^
  =E2=94=82 /gnu/store/3ka3= a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c++/type_traits:2654:51: error= : use of undeclared identifier '_Tp'
  =E2=94=82   &= nbsp; noexcept(__and_<is_nothrow_move_constructible<_Tp>,
 = ; =E2=94=82          &nbs= p;            &= nbsp;           &nbs= p;            &= nbsp;  ^
  =E2=94=82 /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn2= 9z-profile/include/c++/type_traits:2654:55: error: expected a type
 = ; =E2=94=82     noexcept(__and_<is_nothrow_move_cons= tructible<_Tp>,
  =E2=94=82     &nbs= p;            &= nbsp;           &nbs= p;            &= nbsp;           ^
&nbs= p; =E2=94=82 /gnu/store/3ka3a9wgx5sk6ac84nldx7ldpxppn29z-profile/include/c+= +/type_traits:2653:5: error: C++ requires a type specifier for all declarat= ions
  =E2=94=82     swap(_Tp&, _Tp&)  =E2=94=82     ^
  =E2=94=82 fatal erro= r: too many errors emitted, stopping now [-ferror-limit=3D]
  =E2= =94=82 20 errors generated.
  =E2=94=94=E2=94=80=E2=94=80=E2=94=80= =E2=94=80


4.3 (non desirable) fix of the `CPLUS_INCLUDE_PATH' (r= emoving `/gnu/store/.../include/c++')
=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80

  For information, it is p= ossible (but obviously in general not
  desirable) to fix the `CPLU= S_INCLUDE_PATH' variable (removing
  `/gnu/store/.../include/c++'),= which leads to a correct compilation
  (and execution).

&nb= sp; =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80
  =E2=94=82 guix = environment -C --ad-hoc gcc-toolchain clang-toolchain coreutils grep
&nb= sp; =E2=94=82 export CPLUS_INCLUDE_PATH=3D/gnu/store/3ka3a9wgx5sk6ac84nldx7= ldpxppn29z-profile/include
  =E2=94=82 clang++ hello.cpp
  = =E2=94=82 ./a.out
  =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80
  =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80
  =E2=94= =82 Hello World!
  =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80

5 channels
=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=90=E2=95=90

  =E2=94=8C=E2=94=80=E2= =94=80=E2=94=80=E2=94=80
  =E2=94=82 guix describe --format=3Dchann= els
  =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80

  = =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80
  =E2=94=82 (list (ch= annel
  =E2=94=82         (= name 'guix-hpc)
  =E2=94=82      &nbs= p;  (url "https://gitlab.inria.fr/guix-hpc/guix-hpc.git")
  = =E2=94=82         (commit
 = =E2=94=82           "fa8= 7605fe93fb85b02dad9db246299bcf223f2e0"))
  =E2=94=82  &nb= sp;    (channel
  =E2=94=82    &= nbsp;    (name 'guix-hpc-non-free)
  =E2=94=82 =         (url "https://gitlab.inria.fr/gu= ix-hpc/guix-hpc-non-free.git")
  =E2=94=82    &= nbsp;    (commit
  =E2=94=82    =        "43d8cb72144a183aa7a93499f9c59ec0f8424= 4b0"))
  =E2=94=82       (channel
=   =E2=94=82         (name 'gui= x)
  =E2=94=82         (url= "https://git.savannah.gnu.org/git/guix.git")
  =E2=94=82 &nbs= p;       (commit
  =E2=94=82 &nb= sp;         "c6872990b51971922f3064= cba54ab752fcdc1559")
  =E2=94=82      = ;   (introduction
  =E2=94=82    &nbs= p;      (make-channel-introduction
  =E2= =94=82           &nb= sp; "9edb3f66fd807b096b48283debdcddccfea34bad"
  =E2=94=82 &nb= sp;           (openpgp-fi= ngerprint
  =E2=94=82       &nbs= p;       "BBB0 2DDF 2CEA F6A8 0D1D  E643= A2A0 6DF2 A33A 54FA")))))
  =E2=94=94=E2=94=80=E2=94=80=E2=94=80= =E2=94=80

--=_31f9a8b4-834e-42a7-9635-94f73c30bc07-- From debbugs-submit-bounces@debbugs.gnu.org Thu Oct 22 04:10:14 2020 Received: (at 43023) by debbugs.gnu.org; 22 Oct 2020 08:10:14 +0000 Received: from localhost ([127.0.0.1]:51368 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kVVfq-0005pR-I4 for submit@debbugs.gnu.org; Thu, 22 Oct 2020 04:10:14 -0400 Received: from mail3-relais-sop.national.inria.fr ([192.134.164.104]:40194) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kVVfo-0005pB-TJ for 43023@debbugs.gnu.org; Thu, 22 Oct 2020 04:10:13 -0400 X-IronPort-AV: E=Sophos;i="5.77,404,1596492000"; d="scan'208";a="362464327" Received: from 91-160-117-201.subs.proxad.net (HELO ribbon) ([91.160.117.201]) by mail3-relais-sop.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 22 Oct 2020 10:10:05 +0200 From: =?utf-8?Q?Ludovic_Court=C3=A8s?= To: Emmanuel Agullo Subject: Re: bug#43023: clang++ in a {clang-toolchain + gcc-toolchain} environment References: <109069324.10892414.1598276637610.JavaMail.zimbra@inria.fr> Date: Thu, 22 Oct 2020 10:10:05 +0200 In-Reply-To: <109069324.10892414.1598276637610.JavaMail.zimbra@inria.fr> (Emmanuel Agullo's message of "Mon, 24 Aug 2020 15:43:57 +0200 (CEST)") Message-ID: <87v9f2u1eq.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: 43023 Cc: 43023@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -6.0 (------) Hi Emmanuel, Emmanuel Agullo skribis: > A typical "hello world" C++ fails in an environment with both > `gcc-toolchain' and `clang-toolchain', apperently due to the setup of > the `CPLUS_INCLUDE_PATH' environment variable (used because of the > `#include ' instruction), when compiling with `clang++'. Did you want to have both toolchains in the environment, or was the goal to use Clang, but GCC just happened to be already there (being the default toolchain)? In the latter case, the new =E2=80=98--with-c-toolchain=E2=80=99 option may= help: it allows you to select =E2=80=98clang-toolchain=E2=80=99 instead of the defau= lt GCC tool chain. Note =E2=80=9Cinstead of=E2=80=9D rather than =E2=80=9Cin addition = to=E2=80=9D, which means that there=E2=80=99s only one tool chain in the environment, so no risk of interference. https://guix.gnu.org/manual/devel/en/html_node/Package-Transformation-Opt= ions.html Now, if you really want the two toolchains in the same environment, we=E2=80=99ll have to investigate, though I=E2=80=99m not sure it=E2=80=99s= even fixable as it breaks assumptions behind uses of #include_next in libstdc++ and elsewhere. Thanks, Ludo=E2=80=99.