質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
GCC

GCCはGNU Compiler Collectionの略です。LinuxのC言語コンパイラのデファクトスタンダードであり、数多くの他言語やプラットフォームサポートもします。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

623閲覧

C++で#include<numeric>をしようとすると、「'__countr_zero' is not a member of 'std'」というエラーが出る

TON

総合スコア3

GCC

GCCはGNU Compiler Collectionの略です。LinuxのC言語コンパイラのデファクトスタンダードであり、数多くの他言語やプラットフォームサポートもします。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2022/11/30 00:13

質問

VSCodeのCode Runnnerを用いて

c++

1#include<numeric>

を実行したところ、以下のようなエラーメッセージが出ました。
<numeric>の内部には全く触れていないはずなのですが、<numeric>に問題があるようなエラーが出て首を傾げております。
Code Runnerを用いずに実行してみてもエラーが出てしまいます。
gccの再インストールをしてみてもうまくいかず...

原因としてどのようなことが考えられるでしょうか。

エラーメッセージ

In file included from main.cpp:1: /usr/local/Cellar/gcc/12.2.0/include/c++/12/numeric: In function 'constexpr _Tp std::__detail::__gcd(_Tp, _Tp)': /usr/local/Cellar/gcc/12.2.0/include/c++/12/numeric:129:28: error: '__countr_zero' is not a member of 'std' 129 | const int __i = std::__countr_zero(__m); | ^~~~~~~~~~~~~ /usr/local/Cellar/gcc/12.2.0/include/c++/12/numeric:131:28: error: '__countr_zero' is not a member of 'std' 131 | const int __j = std::__countr_zero(__n); | ^~~~~~~~~~~~~ /usr/local/Cellar/gcc/12.2.0/include/c++/12/numeric:149:24: error: '__countr_zero' is not a member of 'std' 149 | __n >>= std::__countr_zero(__n); | ^~~~~~~~~~~~~

補足情報

macOS Ventura 13.0.1
VSCode 1.71.2
C++17
g++ (Homebrew GCC 12.2.0) 12.2.0

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

int32_t

2022/11/30 00:27

どういうコマンドラインでコンパイルされてますか?
TON

2022/11/30 00:41

g++ main.cpp といった様にしています。
jbpb0

2022/11/30 01:00 編集

> Code Runnerを用いずに実行してみてもエラーが出てしまいます。 > g++ (Homebrew GCC 12.2.0) 12.2.0 当方のmacで、 #include<numeric> int main() {return 0;} という内容のファイルを作って、 gcc version 11.2.0 (Homebrew GCC 11.2.0_1) でコンパイルしたら、エラー出ませんでした
TON

2022/11/30 01:04

自己解決することができました。同ディレクトリ内にあったbitというcppファイルが悪さをしていた様です。 こちらの不注意で時間を取らせてしまい申し訳ございません。 質問を見て考えてくださりありがとうございました。
jbpb0

2022/11/30 01:13 編集

https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/std/numeric の70行目で # include <bit> してて、本来ならば https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/std/bit がインクルードされて、それの248行目に __countr_zero(_Tp __x) noexcept があるのですが、そのファイルではなく、 > 同ディレクトリ内にあったbitというcppファイル がインクルードされてしまってたのですかね
TON

2022/11/30 01:23

そこまで考えていただきありがとうございます! そのように考えるとしっくりきますね。__countl_zeroはどこから出てきたのかと考えていましたが、<bit>の中にあるとは検討もしませんでした...
int32_t

2022/11/30 01:27

#include <> なら、普通はカレントディレクトリを最初に見たりしない気がしますね。環境変数などでインクルードファイル検索パスを指定しているんでしょうか。
TON

2022/11/30 01:36

詳しくは把握できていないのですが、昔にVSCodeで#include<bits/stdc++.h>を使えるようにした時、#include<>一般についてもパスを弄ったのかもしれません。
guest

回答1

0

自己解決

同じディレクトリ内にbitというcppファイルが生成されていることに気がつき、そのファイルを削除してみると、どういうわけかエラーが取れました。

この質問を見て考えてくださった方々、ありがとうございました。

投稿2022/11/30 01:00

TON

総合スコア3

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問