Rokiのチラ裏

学生による学習のログ

Clang

普段使いのコンパイル環境の整備

私は普段ちょっとしたコードに対してコンパイルを行う時、GCC と Clang のどちらかを使う。使うたびにコンパイルオプションを付与するのは面倒なので、これまでは単にオプションを含めた文字列をそのまま .zshrc のエイリアスとして設定していたのだが、あん…

clangでのnoexcept、式が定数式の場合でも0を送出する事がある

@530506 と思ったらバグ報告されていた。https://t.co/eq4rbFhuZy 淡白な回答だなあ。— roκi (@530506) 2016年12月12日 定義済みのconstexpr関数をop noexceptへ渡すと0が送出されているが、これは規格準拠の挙動ではない。 The result of the noexcept oper…

Xcode8.0 deprecatedのEndless stream of warnings

Xcode8.0にアップデートしてからGCC6.1.0でコンパイルを行うと、どうも下記のような警告文が大量に出力されるようになった。 warning: section "__textcoal_nt" is deprecated .section __TEXT, __textcoal_nt, coalesced, pure_instructions ^ ~~~~~~~~~~~~…

clang HEAD 4.0.0 tupleにarrayを初期化、代入できる?

規格書(N4606 § 20.5.2)には載っていないが、Wandbox上でのclang HEAD 4.0.0では、以下のコードが通る。 [Wandbox]三へ( へ՞ਊ ՞)へ ハッハッ std::tuple<int,int>(std::experimental::make_array(42,42)); まずヘッダーファイルを見てみないとなんとも言えないので、実機</int,int>…

最新版Clangのビルドの作業ログ

普段からGCCばかり使うので、Clangのアップデートを怠っていた。 Clang - Getting Startedの通りに実行するだけだ。一連の流れをスクリプトに起した。 #!/bin/zsh emulate -R sh sudo apt-get build-dep -y llvm clang sudo apt-get install -y subversion c…

C++17 std::array 規格によりほぼconstexpr化

C++14までではレガシー配列とstd::initializer_list*1がconstexprに対応していた*2が、C++17以降、std::arrayはfillとswapメンバ関数以外の全てを、constexpr化するとの事。 #include<array> template<class _Tp> using Container_value_t=typename _Tp::value_type; template<class _Tp> </class></class></array>…