From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from icp-osb-irony-out3.external.iinet.net.au (icp-osb-irony-out3.external.iinet.net.au [203.59.1.153]) by sourceware.org (Postfix) with ESMTP id 6160D3858C54 for ; Mon, 9 May 2022 07:21:50 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 6160D3858C54 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=netspace.net.au Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=netspace.net.au IronPort-SDR: FusABMJyfGhpndBABxe57bE3sdwa36pzBYgNG6+L6ofnfRtzUprvqa93Ii9mYNgElpDXqzWiPL efuz6Med3lR3DaODbp6fLDk5tWPfTL6iqwKeTwczXbYXj3wsqzqW2/Qqn0YU0OZTXPuGQ+3YSA vOKcRCm2owj1AimXGQpZ8yzEqM2b040wdvLVgDNVH7qO1vS2aqLCURHswaclGg5dtGNpmPtlbA 8LiyjUuO9bxSA6dZCgeWmDYSLYr78qaOEeMD6hZmp7bp3nK6a3KiCRJImgUYCHAMI6pKB61dr4 eqs= X-SMTP-MATCH: 0 X-IPAS-Result: =?us-ascii?q?A2B/AQA0wHhi/4Uxj24NTR4BAQsSDEAJgTsLiUSRDp5fC?= =?us-ascii?q?wEBAQEBAQEBAUsEAQGFAgKFPiY3Bg4BAgQBAQEBAwIDAQEHAQEBBQEBAQEBA?= =?us-ascii?q?QYDAYEchS+HCQEBAQMjDwEFUQsNCwICJgICVwYNCAEBgnmudHqBMRpnhG2DL?= =?us-ascii?q?IFlgRAsgWaMd0OCDYE8D4J0PogagmUElEyBXRNDgQTCOYNTn20GEy2WcwORX?= =?us-ascii?q?ZZiohyGeYF/MxoIFxmDJFCOVBaOQIEeAgYBCgEBAwmRbwEB?= IronPort-Data: A9a23:Gf+SR6vPJkj2qlELHg1pQpRY8OfnVNdcMUV32f8akzHdYApBsoF/q tZmKTuCP6mCZTf8f4ggO43k9UhUsJ+AyNVlGgA++SEwHywV9ZOVVN+UB3mrMnLJJKUvbq7HA +byyzXkBJppJpMJjk71atANlZT9vE2xbuKU5NTsY0idfic5DnZ44f5fs7Rh2NQw3IDpW1nlV e7a+qUzBnf0g1aYDUpJs8pvmDs31BglkGpF1rCWTakjUG72zxH5PrpGTU2CByKQrr1vIwKPb 72rIIdVX4/u10xF5tuNyt4Xe2VWGeSKZVDmZnB+A8BOiTAazsA++vpgbqJEMS+7hh3R9+2dx umhurSrRz54L7Tltt0gXgkfHjNuYqxA1+LIdC3XXcy7lyUqclPfmqQ0ShhobctBp6AuWVQmG f4wcWlVKEnf3KTqkfTiEbIEascLdaEHOKsFuGpgxC7xC/s6WojKSKiM49JEmj4t7ixLNa2ON pZHOWozPXwsZTUVAlonGLMl3972n2HhTWwJ8GC5hZcetj27IAtZleKF3MDuUtOGT+1OmVuCr W/Z9n70RBYAO7SiJSGtqyv0wLaTxmWnCcRLT+bQGuNWvWB/D1c7UHU+PWZXa9Hl4qJic7qz8 3Apxxc= IronPort-HdrOrdr: A9a23:k59s6aEzbsEFs6GVpLqE0ceALOsnbusQ8zAXPjNKJyC9Ffbo8/ xG/c5rsCMc5wx6ZJhNo6HiBEDEewK/yXcX2+Qs1NWZNzUO0VHARL2Kr7GD/9SKIULDH4BmtJ uIP5ITNDWEZmIK6voTqWKDYrAd/OU= X-IronPort-Anti-Spam-Filtered: true X-IronPort-AV: E=Sophos;i="5.91,210,1647273600"; d="scan'208";a="389468849" Received: from unknown (HELO [192.168.15.10]) ([110.143.49.133]) by icp-osb-irony-out3.iinet.net.au with ESMTP; 09 May 2022 15:21:44 +0800 Subject: Re: sizeof To: GDB mailing list References: <89fec0c3-8259-4951-5478-2afe6e0f1643@simark.ca> From: Russell Shaw Message-ID: <0bc59583-bc2f-0ca7-e5eb-6f371ca402e1@netspace.net.au> Date: Mon, 9 May 2022 17:21:43 +1000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 MIME-Version: 1.0 In-Reply-To: <89fec0c3-8259-4951-5478-2afe6e0f1643@simark.ca> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.3 required=5.0 tests=BAYES_00, KAM_DMARC_STATUS, NICE_REPLY_A, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gdb@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 09 May 2022 07:21:57 -0000 On 9/5/22 3:29 am, Simon Marchi wrote: > > > On 2022-05-08 11:22, Russell Shaw wrote: >> When inspecting a C++ file, i get: >> >> (gdb) p sizeof(int()) >> $82 = 1 >> >> (gdb) p sizeof(int) >> $83 = 4 >> >> Not right ? >> >> Package: gdb >> Version: 11.2-1 >> on debian > > The compiler seems to agree with GDB: > > $ cat test.cpp > #include > > int main() > { > printf("%zu\n", sizeof(int)); > printf("%zu\n", sizeof(int())); > } > $ g++ test.cpp > test.cpp: In function ‘int main()’: > test.cpp:6:19: warning: invalid application of ‘sizeof’ to a function type [-Wpointer-arith] > 6 | printf("%zu\n", sizeof(int())); > | ^~~~~~~~~~~~~ > $ ./a.out > 4 > 1 > > I don't really know what sizeof(int()) means anyway. clang just rejects > it: > > $ clang++ test.cpp > test.cpp:6:19: error: invalid application of 'sizeof' to a function type > printf("%zu\n", sizeof(int())); > ^ ~~~~~~~ sizeof(int()) should transform to sizeof(int (*)()) according to the C++20 standard. ********************************************************************** cat main.cpp void f(int()) { } int a = f; int main() { } g++ -DHAVE_CONFIG_H -I. -std=c++20 -Wall -Wno-unused -g -O0 -MT main.o -MD -MP -MF .deps/main.Tpo -c -o main.o main.cpp main.cpp:8:9: error: invalid conversion from ‘void (*)(int (*)())’ to ‘int’ [-fpermissive] 8 | int a = f; | ^ | | | void (*)(int (*)()) **********************************************************************