- 1 名前:デフォルトの名無しさん [2007/04/04(水) 14:09:06 ]
- 語って.はぁと part boost::mpl::int_<4>
過去スレ part 3 pc11.2ch.net/test/read.cgi/tech/1158991211/ part 2 pc8.2ch.net/test/read.cgi/tech/1139313234/ part 1 pc8.2ch.net/test/read.cgi/tech/1091198276/ ■関連サイト■ Boost C++ Libraries www.boost.org/ Boost 翻訳プロジェクト boost.cppll.jp/HEAD/ Let's Boost www.kmonos.net/alang/boost/ boost info shinh.skr.jp/boost/
- 21 名前:デフォルトの名無しさん [2007/04/12(木) 19:06:41 ]
- 下記のコードで
A( 1 ) in block A( 2 ) ~A( 1 ) out block ~A( 2 ) みたいな出力を期待したのですが、違いました。 ばぐですか? ソース: struct A { A(const int id) : id_(id) { cout << "A( " << id << " )" << endl; } ~A() { cout << "~A( " << id_ << " )" << endl; } int id_; }; int main() { boost::shared_ptr<A> a(new A(1)); boost::weak_ptr<A> wa(a); cout << "in block" << endl; if( boost::shared_ptr<A> aa = wa.lock() ) { aa.reset(new A(2)); } cout << "out block" << endl; return 0; }
- 22 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 19:36:15 ]
- 普通に考えたら
A( 1 ) in block A( 2 ) ~( 2 ) out block ~( 1 ) じゃないか?
- 23 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 20:32:36 ]
- > if( boost::shared_ptr<A> aa = wa.lock() ) {
うへえ、キモい
- 24 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 21:05:05 ]
- そうか?
- 25 名前:デフォルトの名無しさん mailto:sage [2007/04/12(木) 23:44:37 ]
- >>23 kwsk
- 26 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 00:37:03 ]
- aaの生存期間ってif文終了時点まで、であってるかな
- 27 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 01:08:14 ]
- // ericne, 27/nov/05: CW9_4 doesn't like if(shared_ptr x = y)
shared_ptr<Derived> dep = cur2->lock(); if(dep.get()) { sout << "0x" << (void*)&*dep << ','; } 使うべきだが使えない。 いつものパターンです
- 28 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 01:47:29 ]
- int main()
{ boost::shared_ptr<A> a(new A(1)); boost::weak_ptr<A> wa(a); cout << "org: 0x" << (void*)a.get() << endl; // org: 0x0x00033480 cout << "in block" << endl; if( boost::shared_ptr<A> aa = wa.lock() ) { cout << "aa: 0x" << (void*)&*aa << endl; // aa: 0x0x00033480 aa.reset(new A(2)); cout << "reseted aa: 0x" << (void*)&*aa << endl; // reseted aa: 0x0x00037118 } cout << "out block" << endl; return 0; } 27氏がなにが言いたいのか分からない件について
- 29 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 08:23:51 ]
- 27はifの中での変数宣言が使えないコンパイラがあるとでも言いたいんだろ。
でもこれforでの変数宣言よりも古くかあるんだけどな……。
- 30 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 10:01:06 ]
- shared_ptrでは、ということだろ。
詳しい条件は知らない
- 31 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 10:41:52 ]
- みんな CVS から落としてきたやつを使ってるの?
それとも 1.33.1 ?
- 32 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 11:40:48 ]
- linuxでopenvrmlというライブラリをビルドしていたんですが、
boost/ptr_container/ptr_map.hpp というファイルが見つからないというエラーが出てmakeにコケてしまいます。 /usr/include/boost/にboostのファイルはあるみたいなのですが、 /ptr_container/がディレクトリごと存在していません。 boostには/ptr_container/があるものとないものがあるのでしょうか? yumでboostをインストールしたところ、 /ptr_container/は入っていたのですが、 /usr/local/include/boost/ にインストールされてしまいました。 /usr/local/include/boost/のものを/usr/include/boost/に上書きしたらまずいでしょうか? ちなみに/usr/local/include/boost/ptr_container/だけを/usr/include/boost/ にコピーしてみたところ、別のboostのファイルの関数名と衝突?してしまいました。 boostにはいくつか種類があるのでしょうか? boostに対してもlinuxに対してもそれほど詳しくないので質問が曖昧で申し訳ないのですが、 何かアドバイス頂けるとありがたいです。
- 33 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 11:49:59 ]
- winだとcvsからのをビルドできたよサイト見ながらだったがまあvc8+stlportができなかったが
- 34 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 11:54:40 ]
- >>32
ptr_containerが入ったの割と最近だから
- 35 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 19:41:27 ]
- そういや久しぶりにチェックアウトしたらBoost.BuildがV2になったんだな。
-sTOOLSやっても変な警告でるし-sBUILDも効かないしで悩んでしまった。
- 36 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 20:01:05 ]
- V2 でいろいろ変わっているね。Visual Studio 2005 使用中。
--toolset の指定で vc80 ってできない。自動判定で msvc になる。 以前ライブラリのファイル名に vc80 って入っていた部分が vc になってるのでオートリンクで見つけられないなどなど。 Visual Studio だからかな。ほかの環境ではどう? 1.34 全然リリースされないね。
- 37 名前:32 mailto:sage [2007/04/27(金) 00:43:09 ]
- >>34
レスありがとうございます。 なるほどそういうこともある訳ですか。 現在も色々と追加修正されているということですね。 試しに1.33.1のソースをmakeして、元からあったboostと置き換えてみたところ、 ライブラリのmake自体にはコケたものの関数名の衝突はなくなりました。 boostについての疑問は解決しましたので後は自分で頑張ってみます。 ありがとうございました。
- 38 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 02:26:44 ]
- >>36
--toolset=msvc-8.0 でおk 自動でバージョンが入らないのは多分バグ。
- 39 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 20:27:20 ]
- lists.boost.org/Archives/boost/2007/04/120375.php
>The first beta of what will become version 1.34.0 is now キタ━━━━━━(゚∀゚)━━━━━━!!
- 40 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 21:21:11 ]
- まああれだsvnでやってるからあんまかわらなん・・・・・・・
- 41 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 22:21:56 ]
- >>38 ほほう。情報THX。
俺自分で Exepress CX つかってバイナリパッケージ作ってるんで、 次にパッケージングするときにやってみるよ。 パッケージって言っても所詮大学の研究室の学生数人で使うだけだが。
- 42 名前:デフォルトの名無しさん mailto:sage [2007/04/28(土) 18:41:41 ]
- serializationで複数のDLLにまたがるクラスをシリアライズするコードを書くと
DLLとEXEの動的初期化中にextended_type_infoの登録が複数回実行されるらしく extended_type_info.cpp 74行目の assert(lookup(eti) == m_self->m_map.end()); にひっかかってしまって困っています。 lists.boost.org/boost-users/2005/09/14096.php や comments.gmane.org/gmane.comp.lib.boost.user/25434 なども同じ問題のようで 登録の重複を許すとなにやら問題が起きるらしいんですが DLLとEXEごとにstaticなものがあちこちに分散するので重複を防ぐのは難しそうです。 boostのソースを書き換えるしかないですか?
- 43 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 03:14:16 ]
- move_ptrってどういうものなんでしょうか?
- 44 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 14:05:09 ]
- >>43 std.dkuug.dk/jtc1/sc22/wg21/docs/papers/2002/n1377.htm
- 45 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 07:55:45 ]
- svnリポジトリはどこ?
sf.net は CVS だけ?
- 46 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 12:34:08 ]
- めもめも
boost::tokenizerでwchar_tを使うには <boost/tokenizer.hpp>のclass tokenizer宣言の後に typedef tokenizer< char_delimiters_separator<wchar_t>, std::wstring::const_iterator, std::wstring > wtokenizer; とか追加すれば良いっぽい。 と思ったけど同じようなことが数年前に個人舞炉愚に既に書いてあるな。 ノイズにしかならん。俺は馬鹿か。
- 47 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 13:21:39 ]
- 1.34あたりにはデフォで入ってたりせんかのう
- 48 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 16:16:24 ]
- >>45
CVSだけー 次にどっから来たか書こうか
- 49 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 07:05:39 ]
- svn便利なのになー
- 50 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 04:00:00 ]
- 21 名前:デフォルトの名無しさん[sage] 投稿日:2006/09/24(日) 17:51:52
Visutl Studio 2005 Express Edition で Boost をインストールしようとしたのですが ワーニングがいっぱいでて1時間以上まって エラーも5個でて、 regexp の例題をコンパイルしてもエラーでだめでした。(エピステーメさんのHPの) Boost を 2005 EE にインストールする方法を書いてあるHPがありましたが教えてください。 よろしくおねがします。 34 名前:デフォルトの名無しさん[sage] 投稿日:2006/09/26(火) 12:54:58 >>21 多分一部のlibコンパイルに失敗してる 奇遇にも昨日EEへの導入したときに同じヘマしたので俺の場合の解決手順を書いとこう EEインスコの自動設定以外の(SDKとかへの)パスは通してない set INCLUDE=C:\Program Files\Microsoft Platform SDK\Include C:\Program Files\Microsoft Visual Studio 8\VC\vcvarsall.bat をDOS窓に投げて実行 bjam -sTOOLS=vc-8_0 --prefix="C:\Program Files\Microsoft Visual Studio 8\VC" install 事前にDOS窓の高さバッファ9999にするとか --prefix をわざとD:\Prog.. ってして作業内容把握できるようにすると判りやすいかも
- 51 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 09:00:19 ]
- 関係ないけど、DOSってscriptコマンドみたいのは無いのかね
- 52 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 11:13:28 ]
- 本当に関係ないね。
- 53 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 03:12:56 ]
- しかしboostは、アルゴリズムや数学に関する機能は豊富だけど、
アプリ開発にはいらんような機能ばっかだな。 まあC++の用途を考えれば、そういうのに偏るのも分からないでもないが。 個人的にはXMLのパーサを入れてほしい。
- 54 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 04:28:04 ]
- 言いだしっぺの法則
- 55 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 04:58:28 ]
- apache のヤツでええやん。
- 56 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 10:26:34 ]
- boostはC++の委員会によって標準化されたライブラリだからこそ使うに値する。
よく使われるような機能がないからといって、 その辺で公開されているライブラリを使おうというのであれば、boostの存在価値が薄らぐ。
- 57 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 16:02:28 ]
- じゃあいつまでも独りでグチグチ言ってろ
- 58 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 16:54:00 ]
- spiritは面白いけどコンパイルが重すぎるなぁ
- 59 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 19:29:54 ]
- XMLパーサなんかいらねえよ
でもそのうち入るんだろうなあ
- 60 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 19:53:31 ]
- SerializationのXML読み書き部分から独立なんてことになったりして。
xml_archive読んだことないから、そんなことができるかどうかは知らないが。
- 61 名前:デフォルトの名無しさん mailto:age [2007/05/07(月) 20:00:15 ]
- boost1.34.0をVisualC++7.1(2003)でコンパイルしたのですが、
同じライブラリファイルで名前にバージョンが入るのと入らないのができてしまいました。 たとえば、 boost_filesystem-vc-mt-1_34.lib と boost_filesystem-vc-mt.lib です。 なぜ二つあるんでしょうか? そしてどちらを使えばいいんですか?
- 62 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 20:04:18 ]
- バイナリを比べて見たら?
- 63 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 20:14:11 ]
- まったく同じものです。
Windowsではシンボリックリンクが使えないので、 このように同じファイルを用意したのでしょうか?
- 64 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 20:16:09 ]
- >>63
Jamfile読めば分かるけど少なくともNTFSではハードリンクになってるはず。
- 65 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 20:32:27 ]
- bjamのコマンドの末尾に > log.txt つけるのでもいいぜ。
- 66 名前:デフォルトの名無しさん [2007/05/07(月) 20:57:49 ]
- バージョンのついてるのとついてないの、
どっちをリンクすればいいんですか?
- 67 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 21:10:50 ]
- VCならパスの設定しておけば自動でリンクされると思うが
- 68 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 23:20:40 ]
- >>59
俺は欲しいが
- 69 名前:デフォルトの名無しさん [2007/05/09(水) 00:50:40 ]
- XMLパーサーもまだ入ってないのか。まさに無駄な糞ライブラリだな。
- 70 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 01:11:43 ]
- progress_displayはあるけどな
- 71 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 02:25:57 ]
- >>5
- 72 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 23:24:42 ]
- だいたい余分な機能が多すぎなんだよ。八元数なんていったい誰が使うんだ。
そりゃ使うやつはいるかもしれないが、準標準C++ライブラリを謳うBoostに入れる意味があるのか?
- 73 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 23:36:38 ]
- 要らない人は使わなければ良いだけでは?
- 74 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 23:36:57 ]
- 3Dで使う人もいるんでない?
- 75 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 23:41:58 ]
- 四元数は使うだろうけど、八元数まで使うの?
- 76 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 01:25:06 ]
- クォタニオンも3Dグラフィックス以外では使い道なさそうだなあ。
それにDirectXにはクォタニオンのクラスが元々あるんだからそれ使うだろうし、 OpenGLにも多分あるだろうからわざわざBoostのを使う人はいないだろう。
- 77 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 01:29:26 ]
- OpenGLにはクォタニオンは無い。DirectXのはいろんな意味で使いにくい。
複素数なんかと同じ意味で「標準ライブラリ」に組み込まれるのはおかしくないと思う。 複素数だって使わない人はいるでしょ?
- 78 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 01:37:50 ]
- じゃあクォタニオン使わずにuBLASの行列で演算すればいい。
- 79 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 01:45:08 ]
- 4と4x4じゃコストに差がありすぎる。
- 80 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 02:23:26 ]
- お前ら、progress_displayが泣いてるぞ。
- 81 名前:デフォルトの名無しさん [2007/05/10(木) 12:16:14 ]
- ここでboostの質問してもよかですか?
- 82 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 13:04:28 ]
- progress_displayって生きてる意味あるの?
まぁ、もうとっくに死んでるんだけどね。 お前ら実はシックスセンスの持ち主なんじゃないの?
- 83 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 13:46:14 ]
- いいえ、僕はセックスシンスの持ち主です。
- 84 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 14:21:27 ]
- 僕はソックスモエス
- 85 名前:デフォルトの名無しさん [2007/05/10(木) 14:48:05 ]
- グラフ関数のまとめサイトある?
なんか面白そうな事が書いてあるから使って見たいんだが
- 86 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 14:57:22 ]
- syrinx.q.t.u-tokyo.ac.jp/~yas/graph/tutorial.html
- 87 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 16:29:34 ]
- >>86
学校の問題でSTL使ってるのはじめてみた・・・・・orz
- 88 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 19:04:08 ]
- ブーストを使うお前らブースターだな
- 89 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 00:55:06 ]
- >>86こりゃいいや。ブックマークいれといた
- 90 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 12:43:17 ]
- cmake
どうなるんだろ unix,win混在環境なので非常に気になる
- 91 名前:デフォルトの名無しさん [2007/05/11(金) 18:11:00 ]
- >>86
こういうページを見ると 東大すげえなって思う
- 92 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 22:05:07 ]
- >>86
精神衛生上非常に好ましいな
- 93 名前:デフォルトの名無しさん mailto:age [2007/05/12(土) 18:31:40 ]
- using namespace std;
- 94 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 18:39:35 ]
- >>93
この俺様のソースファイルでは、名前が衝突してないよという意味だからいいだろ、別に。
- 95 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 19:05:29 ]
- >>94
微妙にとげのある言い方だな
- 96 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 19:30:32 ]
- using namespeceを使うのは、gotoを使うのと同じぐらい初心者だ。
- 97 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 19:47:03 ]
- 「gotoは絶対にダメだ」と言う奴は「自称上級者、実際初心者」だ。
using namespaceもgotoと同様に、絶対ダメなものではない。 96こそがホンモノの初心者だ。
- 98 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 19:53:40 ]
- まだ経験が足りないだけかもしれんがgoto使わないとヤバイって状況には陥ったこと無いな
例外を使わざるを得ないって状況はC++やり始めた頃から結構遭遇してるけど 制約が多い環境でのプログラミングならそういうのもよくあることなのかゐ?
- 99 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 19:55:13 ]
- 上級者という者は、初心や上級というものを気にしない。
という自己言及のパラドックス。
- 100 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 20:12:05 ]
- >>98
C++だと例外があるからな。 Cだと異常処理の時に便利だよ。(マクロとコーディングルールも合わせて使うけどな)
- 101 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 20:12:06 ]
- gotoやループ内でのswitch-caseによるフラグ操作も原則禁止だな。
ただし状態遷移のプログラムの場合は堅い設計の上で意図的に使う。 問題の本質がそうであるから。
- 102 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 20:37:54 ]
- 兵が恐れずにusing namespaceを使うスレでも立てるかな
- 103 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 20:47:27 ]
- そんな話、C++初心者スレかどっかでやれよ
- 104 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 20:52:29 ]
- Regexって日本語通るようになりましたか?
- 105 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 21:11:54 ]
- 「日本語通る」というのにもいろいろ水準があるような?
- 106 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 21:14:36 ]
- ワイド文字バージョンなら今も昔も使えてるんじゃね。
サロゲートペアが混ざった場合にどうなるか知らんけど。
- 107 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 21:16:20 ]
- 2重ループの抜け出しには迷わずgotoする俺は真の猛者。
- 108 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 21:19:53 ]
- SJIS範囲内だけでいいなら16bitSJIS使うという裏技もある
- 109 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 21:23:06 ]
- UTF-8使え
- 110 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 21:25:19 ]
- >>109
アホ発見
- 111 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 22:38:41 ]
- EUCを使え
- 112 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 23:40:42 ]
- ヘッダファイルでは使わんが、
ソースで using するのは別によくね?
- 113 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 23:46:21 ]
- 画面内に収まる程度のコード内なら普通に使う。
- 114 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 23:47:38 ]
- 関数スコープ内だったらusing宣言は自由に使っていいと思う。
- 115 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 23:49:29 ]
- 書くときは楽だが、保守するときは大変。
なので、stdしか使ったことないな。
- 116 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 23:51:35 ]
- 使わないほうがその関数を使ってる場所を検索一覧するときに楽。
- 117 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 00:00:48 ]
- 長い名前空間があった場合ってどうしてる?
エイリアス作るの?
- 118 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 00:04:11 ]
- namespace hogehoge = sexualvioletmikomikonurse;
- 119 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 00:11:23 ]
- エイリアス作るの?の意味がわからなかったのか?
- 120 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 00:29:10 ]
- sumimasen
- 121 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 00:47:08 ]
- 実際何文字あっても先頭数文字が特徴的ならIDEの補完で終わるからいいんだけどな
|

|