タグ付けされた質問 「clang++」

1
クラスが独自のプライベート静的constexprメソッドにアクセスできない-Clangバグ?
このコードはClang(6、7、8、9、trunk)ではコンパイルされませんが、GCC(7.1、8.1、9.1)では問題なくコンパイルされます。 template<class T> struct TypeHolder { using type = T; }; template<int i> class Outer { private: template<class T> static constexpr auto compute_type() { if constexpr (i == 42) { return TypeHolder<bool>{}; } else { return TypeHolder<T>{}; } } public: template<class T> using TheType = typename decltype(Outer<i>::compute_type<T>())::type; }; int main() …

1
異なるブロックの同じ名前のexternローカル変数が、c ++のコンパイラー間で異なるリンケージを取得するのはなぜですか?
externローカル変数 にどのリンケージが許可されているかを確認しているだけですが、コンパイラ間でいくつかの異なる動作があることがわかりました たとえば 、コメント変数で見られるように、以下のコードをテストした場合、変数varのリンケージは異なります // foo.cpp int var = 10; // external linkage // main.cpp #include <iostream> static int var = 100; // internal linkage int main() { extern int var; // internal linkage std::cout << var << std::endl; { extern int var; // g++: external linkage , clang++: internal …
12 c++  g++  clang++  extern  linkage 

1
C ++でconstオブジェクトを宣言するには、ユーザー定義のデフォルトコンストラクターが必要です。可変メンバー変数がある場合、どうしてですか?
C ++では、メンバー変数を持つクラスのオブジェクトをとして宣言するにconstは、ユーザー定義のデフォルトコンストラクターが必要です。次のコードはこれを示しています。 class Some { int value; }; int main() { // error: default initialization of an object of const type 'const Some' // without a user-provided default constructor const Some some; return 0; } ただし、クラスが所有するメンバー変数が変更可能として修飾されている場合、コンパイラーはエラーを報告しません。参考までに、コマンドを使用してコンパイルしましたclang++ -std=c++17 -stdlib=libc++ helloworld.cpp -o helloworld.out --debug。この結果はコンパイラのバグによるものなのか、C ++言語で定義された構文によるものなのでしょうか。 class Some { mutable int value; }; …
8 c++  clang++ 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.