INASOFT 管理人のひとこと


フリーソフトダウンロードサイト「INASOFT」の管理人 矢吹拓也 が日々の「ひとこと」を語るページです。
2021年1月1日より、旧ブログ(blog.inasoft.org)からお引越ししました。
・INASOFT Webサイト: https://www.inasoft.org/
・管理人のふたこと(長文記事/寄稿文): https://www.inasoft.org/talk/
2022年7月下旬より再び本業多忙化してきているため、更新頻度は落ちます。 [2022/7/24 19:32]

目次 | ←前へ / 2016-10-06 07:22 / 次へ→ / 最新へ⇒

■boost::regexとstd::regex、どっちが使われているのだ!これは!

2016年10月 6日(木) 7:22:53 [さくらのブログから転記]



RSSRSS配信中
https://www.inasoft.org/



先日、Visual C++ 2010にstd::regexが入っていることに全然気づいていなかった!という趣旨の記事を書いたわけですが、ふと、疑問が。

先日、だいぶ前に書いた自作のソースコードを見ていたら、こんな記述が。

sb_regex1.png

自作のソースコードなのに、なんだか香ばしい匂いがします。とりあえずusing namespaceとか。

まぁ、その善し悪しは、今回は置いておくことにしまして。

で、その下の方に次のような記述がありました。

sb_regex2.png

さて、このwregex は、std::regex なのか? boost::regex なのか?

このプログラムの作成当初は、Visual C++ 2005 を使っていたので、明らかに boost::regex だったのですが、Visual C++ 2010 を使っている今となってはどうなるのでしょう?

名前空間の中に同じクラス名がいる場合、そのクラス名を使った途端にコンパイルエラーになるはず。

でも、現実には、なっていない。

そこもよくわからないけど、ならばどちらが使われているのか?


そういえば、よく考えてみたら、 Visual Studio なら、マウスを当てることでその定義情報を得られるんだと思い出し、当てて見ると、次のようになりました。

sb_regex3.png

どうやら、boost 側が使われている様子。Visual C++ 2005 を使っていたことから引き続き。

どんな原理が働いているのかな?と思ったら、stdafx.h に記述された次の行が影響していました。

sb_regex4.png

ですよねー。

そりゃそうだ。std側のregexのヘッダをインクルードしていなければ、その存在がコンパイラに知られることもないんだし。コンパイルエラーになるわけもない。

さて、今後、boost::regex(wregex) と std::regex(wregex) の比較と見極めを行っていきたいと思います。

どうやっていこうかなぁ。



目次 | ←前へ / 2016-10-06 07:22 / 次へ→ / 最新へ⇒


目次の表示:


ブログではないので、コメント機能とトラックバック機能は提供していません。ご質問・ご意見等はメールフィードバックまたはTwitter等からお願いします。いただいたご質問・ご意見などは、この「管理人のひとこと」の記事に追加、あるいは新規の記事にする形で一部または全文をそのまま、あるいは加工させていただいた上で、ご紹介させていただく場合があります。
当サイトでは掲載内容による不具合等に関する責任を持ちません。また、内容の正確性についての保証もありませんので、情報をご利用の際は、利用者の自己責任で確認をお願いします。本ページは公開から1年半後の任意のタイミングで削除される予定です。


- 最近の更新 -



3115775 (+1382)[+0733]

Copyright© 2010-2023 INASOFT