4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

2013-10-03以前のGNU libstdc++ではC++11の正規表現は使えません

Last updated at Posted at 2014-01-31

無題 1.png

regexヘッダファイルから利用できるstd::regex周辺のお話。

年に1回くらい「いや、もうそろそろ実装されてるだろ」という前提でstd::regexを使い始めてエラーでハマって1時間くらい調べて「このバージョンでも駄目なのかよ!」ということをやらかしています。

現象としては正しいと思われる正規表現を記述しているのに実行時に例外が投げられるということが発生します。この時点で「自分の使い方が間違っているのかな?」と疑うと無駄な調査を行うことになります。

使えないのにコンパイルできちゃうからたちが悪い・・・。

Ubuntuだと 13.04 のリポジトリにあるg++ 4.7では使えません。確認していませんがおそらく 13.10 でも駄目でしょう。

実装されたのは最近です

http://gcc.gnu.org/ から引用

C++11 support [2013-10-03]
Regular expression support in libstdc++-v3 is now available.

対処法

以下で対処してください。

  • gccの最新版を自分でインストールする。
  • ディストリビューションが配布しているものを使いたい場合は最新のものがくるまで待つ。
  • boostやPocoなどの実装を使用する。

コンパイル時でも実行時でも「not implemented」って表示してくれりゃいいのに・・・。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?