2015年12月10日木曜日

C++14用秀丸エディタ強調表示定義ファイル

C++14を秀丸エディタで

気持ちよく書くために、自前で強調表示定義をいじっていたのを公開してみようかと。

2014年9月17日水曜日

llvm3.5が出てたのでMBAにllvm/clang環境再構築(何度目

LLVM 3.5リリース

参照:http://lists.cs.uiuc.edu/pipermail/llvm-announce/2014-September/000055.html
い ま さ ら 感。2014.9.4くらいにリリースされてた。

LLVMプロジェクトの各ホームページを見るといくつか更新があるようだ。libc++とlibc++abiにも更新が!
前回(3月かよ)はミスや勘違いいろいろあったし、そもそもライブラリのリンクを十分に理解してなかったようなのでもう一度やり直す。

2014年6月12日木曜日

C++11で型がIteratorであるか調べるis_iterator

きっかけはSFINAE

スカラーまたは範囲に対して、同様の操作をそれぞれ定義したいと思った。 もちろんオーバーロードによって同様の関数名として定義したい。 範囲に対する操作を定義するときは、C++標準に倣うとIteratorを使うことが多いので、次のようなコードだ。

template<typename Tin, typename Tio>
void add(Tin first, Tin last, Tio io)
{
  if(first != last)
  {
    *io += *first;
    while(++first != last)
      *++io += *first;
  }
}

template<typename Tio, typename T>
void add(Tio first, Tio last, T v) // error: redefine
{
  if(first != last)
  {
    do
    {
      *first += v;
    }
    while(++first != last);
  }
}

関数のシグネチャが同一なので再定義になっておりコンパイルできぬ。 では3つめの引数の型で呼出を切り替えるようなSFINAEにしてみよう。 これが、思ったよりは簡単でなかったという話。

2014年5月30日金曜日

C++11でis_swappableを実装したかった

型特性を調べる

ヘッダファイル<type_traits>をインクルードすると、標準ライブラリによって型特性を調べることができるようになる。std::is_sameとかstd::is_constructibleとか。 大体のものはそれだけで事足りるが、今回はある型がSwappableかどうか確認したくなったので実装してみようと思った。

2014年4月29日火曜日

C++14の関数戻り値型推論をC++11で模擬【可変長引数マクロ】

C++14で導入予定の関数戻り値型推論

参考:http://faithandbrave.hateblo.jp/entry/20130501/1367396895

C++11でも楽したい

Webを眺めていると、C++14がすでに標準の世界であるかのようにも見えてしまう。 しかし現在の標準はやはりC++11だし、多くの人はまだC++03を書いている。気がする。

C++03に比べれば、C++11では快適にコーディングできる。断然楽だ。C++14は、もっと楽そうだ。

戻り値型の指定

C++で普段からinlineな関数ばかり書いていると、戻り値型の型指定がとてもしんどい。 typedef構文なしでは生きていけないC++03は、もはや使うことも難しい(個人の感想です)。

C++14ではラムダ式のように、一般関数にも戻り値型推論の機能が備わるとのことで待ち遠しい。 茶を飲みながら待つにはまだ少々長い時間がかかりそうなので、C++11の枠内でなんとかならないか考えてみた。