C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part142
https://mevius.5ch.net/test/read.cgi/tech/1554124625/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.105【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1556142878/
■長いソースを貼るときはここへ。■
http://codepad.org/
https://ideone.com/
[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
----- テンプレ ここまで -----
VIPQ2_EXTDAT: default:vvv:1000:512:----: EXT was configured
探検
C++相談室 part143
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ)
2019/06/15(土) 13:51:53.57ID:DKQ0QQLH0323デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 21:18:32.10ID:HRz15QoR0 RustスレなのにC++の話で申し訳ないが、この前
template<class T, class U> void tr_pos(const T& src, U& dst) { ... } // メンバ関数T::get()、U::set()がある前提
というテンプレートを1個書いて、メンバ関数get()やset()を有する無数のクラスA、B、C、...について
任意の組み合わせでの相互変換(および同一型のコピー)を可能ならしめたんじゃわ
C++は数学や!とそのときオモタわ
次の日、今度はメンバ関数get()やset()を持たないクラスFooとBarについて
template<class U> void tr_pos(const Foo& src, U& dst) { ... } // メンバ関数U::set()がある前提
template<class T> void tr_pos(const T& src, Foo& dst) { ... } // メンバ関数T::get()がある前提
template<class U> void tr_pos(const Bar& src, U& dst) { ... } // メンバ関数U::set()がある前提
template<class T> void tr_pos(const T& src, Bar& dst) { ... } // メンバ関数T::get()がある前提
というテンプレートを追加して、{ A, B, C, ... }とFoo、および{ A, B, C, ... }とBar、
および(前日実現済みの){ A, B, C, ... }内の任意のクラス間のの相互変換を
tr_pos(src, dst)と書いただけで可能ならしめるという壮大な体系を実現したんじゃわ
C++は数学や!という思いをそのときさらに強くしたわ
template<class T, class U> void tr_pos(const T& src, U& dst) { ... } // メンバ関数T::get()、U::set()がある前提
というテンプレートを1個書いて、メンバ関数get()やset()を有する無数のクラスA、B、C、...について
任意の組み合わせでの相互変換(および同一型のコピー)を可能ならしめたんじゃわ
C++は数学や!とそのときオモタわ
次の日、今度はメンバ関数get()やset()を持たないクラスFooとBarについて
template<class U> void tr_pos(const Foo& src, U& dst) { ... } // メンバ関数U::set()がある前提
template<class T> void tr_pos(const T& src, Foo& dst) { ... } // メンバ関数T::get()がある前提
template<class U> void tr_pos(const Bar& src, U& dst) { ... } // メンバ関数U::set()がある前提
template<class T> void tr_pos(const T& src, Bar& dst) { ... } // メンバ関数T::get()がある前提
というテンプレートを追加して、{ A, B, C, ... }とFoo、および{ A, B, C, ... }とBar、
および(前日実現済みの){ A, B, C, ... }内の任意のクラス間のの相互変換を
tr_pos(src, dst)と書いただけで可能ならしめるという壮大な体系を実現したんじゃわ
C++は数学や!という思いをそのときさらに強くしたわ
324デフォルトの名無しさん (ワッチョイ)
2019/06/30(日) 21:19:31.58ID:HRz15QoR0 さらに次の日、Foo型オブジェクトsrcとBar型オブジェクトdstについてtr_pos(src, dst)と
書いたらビルドエラーになったわ;
仕方ないので関数のオーバーロードを使って
void tr_pos(const Foo& src, Bar& dst) { tr_pos(src, A); tr_pos(A, dst); }
void tr_pos(const Bar& src, Foo& dst) { tr_pos(src, A); tr_pos(A, dst); }
のようにして解決したんじゃわ
C++はちょっとしたテクニックを要する数学や!とそのときオモタわ
さらに次の日、Foo型同士、およびBar型同士でコピーしたくなったので、
一昨日書いたテンプレートを特殊化したら行けるやろ、と思って
template<> void tr_pos<Foo>(const Foo& src, const Foo& dst) { ... }
template<> void tr_pos<Bar>(const Bar& src, const Bar& dst) { ... }
と書いたらコンパイラが一昨日書いたテンプレートではなくて昨日書いた
オーバーロード関数を特殊化しようとしてビルドエラーになるわrz
C++はいろいろ破綻している罠だらけの言語やとそのとき確信したわ;
書いたらビルドエラーになったわ;
仕方ないので関数のオーバーロードを使って
void tr_pos(const Foo& src, Bar& dst) { tr_pos(src, A); tr_pos(A, dst); }
void tr_pos(const Bar& src, Foo& dst) { tr_pos(src, A); tr_pos(A, dst); }
のようにして解決したんじゃわ
C++はちょっとしたテクニックを要する数学や!とそのときオモタわ
さらに次の日、Foo型同士、およびBar型同士でコピーしたくなったので、
一昨日書いたテンプレートを特殊化したら行けるやろ、と思って
template<> void tr_pos<Foo>(const Foo& src, const Foo& dst) { ... }
template<> void tr_pos<Bar>(const Bar& src, const Bar& dst) { ... }
と書いたらコンパイラが一昨日書いたテンプレートではなくて昨日書いた
オーバーロード関数を特殊化しようとしてビルドエラーになるわrz
C++はいろいろ破綻している罠だらけの言語やとそのとき確信したわ;
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【地震速報】青森県で震度6強 沿岸部に津波警報 ★2 [ぐれ★]
- 【地震速報】青森県で震度6強 沿岸部に津波警報 ★3 [ぐれ★]
- 【地震速報】青森県で震度6強 沿岸部に津波警報 ★4 [ぐれ★]
- 【速報】高市総理が官邸入り [Hitzeschleier★]
- 「日の丸にバツ印」掲げた大学生 あいまいな国旗損壊罪に「怖い」 The Mainichi [少考さん★]
- 【芸能】岡田紗佳、新幹線でありえない迷惑客に遭遇 自分の席に荷物が「ここ私の席ですって言っても…」 [冬月記者★]
- 地震 ★2
- 高市早苗さん、地震が起きてから1時間経ってから津波が来るから避難してXに投稿 [931948549]
- ぺこーら、地震で同僚が次々配信を止めるなか強行し続けるので悪目立ちするwww [268244553]
- 【速報】高市早苗、起床 [779938112]
- 巨大地震 [957955821]
- 00:00:00.000
