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

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

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

MSYS(Minimal SYStem)は、Windows上で動くUnixシェル、テキスト操作ユーティリティなどをまとめたパッケージ。C言語やFortranのコンパイラであるMinGWをカバーする目的で作られています。

C++

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

Clang

Clangは、プログラミング言語 C、C++、Objective-C、Objective-C++ 向けのコンパイラである。

Q&A

解決済

2回答

1121閲覧

MSYS2のclang++のfilesystemがincludeしただけでエラーになる

saki_chan

総合スコア40

MSYS

MSYS(Minimal SYStem)は、Windows上で動くUnixシェル、テキスト操作ユーティリティなどをまとめたパッケージ。C言語やFortranのコンパイラであるMinGWをカバーする目的で作られています。

C++

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

Clang

Clangは、プログラミング言語 C、C++、Objective-C、Objective-C++ 向けのコンパイラである。

1グッド

1クリップ

投稿2019/08/13 07:31

編集2019/08/13 10:59

windows10でmsys2を入れclangをインストールしました。
そして以下のコードをコンパイルするとエラーを吐きます。

C++

1#include <filesystem> 2 3int main() 4{ 5 return 0; 6}

結果

clang++ -std=c++2a -o bin.exe src\main.cpp In file included from src\main.cpp:1: In file included from C:\msys64\mingw64\include\c++\9.2.0\filesystem:37: C:\msys64\mingw64\include\c++\9.2.0\bits/fs_path.h:636:31: error: invalid use of incomplete type 'std::filesystem::__cxx11::filesystem_error' _GLIBCXX_THROW_OR_ABORT(filesystem_error( ^~~~~~~~~~~~~~~~~ C:\msys64\mingw64\include\c++\9.2.0\x86_64-w64-mingw32\bits/c++config.h:177:49: note: expanded from macro '_GLIBCXX_THROW_OR_ABORT' # define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) ^~~~ C:\msys64\mingw64\include\c++\9.2.0\bits/fs_fwd.h:61:9: note: forward declaration of 'std::filesystem::__cxx11::filesystem_error' class filesystem_error;

-std=c++2aをc++17にしても同じ結果ですが、c++14、または削除するとコンパイルが通ります。
どうすれば-std=c++2aのままでコンパイルが通るようになるでしょうか。
msys2のg++で同じようにコンパイルすると通ってくれます。

追記:バージョン

clang++ --version clang version 8.0.1 (tags/RELEASE_801/final) Target: x86_64-w64-windows-gnu Thread model: posix InstalledDir: C:\msys64\mingw64\bin
yumetodo👍を押しています

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

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

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

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

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

guest

回答2

0

インクルードパスがmingw64なのが問題ではないかと?
clangのパスは分かりませんか?(当方Windowsは疎い)

当方では、全て通ります。

text

1usr ~/Project/test % clang++ -std=c++17 -Weverything t1.cpp 2usr ~/Project/test % clang++ -std=c++2a -Weverything t1.cpp 3usr ~/Project/test % cat t1.cpp 4#include <filesystem> 5 6int main() 7{ 8 return 0; 9} 10

投稿2019/08/13 10:34

cateye

総合スコア6851

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

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

yumetodo

2019/08/13 10:36

msys2のpacmanで拾えるバイナリに問題ありそう。お示しのそれはmsys2環境ではないのでは・・・?(勘
cateye

2019/08/13 10:42

失礼、環境を書き忘れました。 clang version 6.0.0 on Linux mint 19.2
saki_chan

2019/08/13 11:00

私のバージョンは追記しましたが、8.0.1ですので、このバージョンでのみ起こってしまっているかもしれません
cateye

2019/08/13 11:03

clang version 10.0.0 (trunk 367677)でも通りますね。
saki_chan

2019/08/13 11:17

エラー箇所を見に行くと、Windowsでifdefいるところですので、linuxではエラーは出ないかもしれません。 #ifdef _GLIBCXX_FILESYSTEM_IS_WINDOWS // XXX This assumes native wide encoding is UTF-16. std::codecvt_utf8_utf16<path::value_type> __cvt; path::string_type __tmp; if constexpr (is_pointer_v<_InputIterator>) { if (__str_codecvt_in_all(__first, __last, __tmp, __cvt)) return path{ __tmp }; } else { const std::string __u8str{__first, __last}; const char* const __ptr = __u8str.data(); if (__str_codecvt_in_all(__ptr, __ptr + __u8str.size(), __tmp, __cvt)) return path{ __tmp }; } _GLIBCXX_THROW_OR_ABORT(filesystem_error( //←のfilesystem_errorはこの部分より下で定義している "Cannot convert character sequence", std::make_error_code(errc::illegal_byte_sequence))); #else // This assumes native normal encoding is UTF-8. return path{ __first, __last }; #endif
guest

0

ベストアンサー

あきらかにバグですね。少し前のclang+gcc-libsならコンパイルが通っていたので。報告しました
https://github.com/msys2/MINGW-packages/issues/5714


Alexpux commented 2019年8月13日 19:51 JST

@yumetodo aask clang or gcc developers, I'm just build this packages but not develop it

認知はされたぽい。

投稿2019/08/13 10:32

編集2019/08/13 11:13
yumetodo

総合スコア5850

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

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

saki_chan

2019/08/13 11:00

ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問