C++相談室 part131 at TECH
[2ch|▼Menu]
[前50を表示]
500:デフォルトの名無しさん
17/08/31 21:32:29.56 SvYtbMXE0.net
>>483
悪いが馬鹿老害は黙っててくれないか。
若い人がせっかく説明したほうが有益だと言ってくれてるのだから。他の人も賛同してくれてる。

501:デフォルトの名無しさん
17/08/31 22:00:17.40 Tmpts49Ar.net
期待を裏切らない>>474

502:デフォルトの名無しさん
17/08/31 22:12:11.60 Ce9FMcgb0.net
みんな、ちゃんとアセンブラから勉強しろよwww

503:はちみつ餃子
17/08/31 23:18:28.91 Ev17QaWq0.net
>>464
いや、もちろん意識してるだろ。
そう書いたつもりだけど、どこをどう読んだんだ?

504:デフォルトの名無しさん
17/08/31 23:19:12.52 JYM1pg890.net
>>471
おまえさ、じゃあ配列の添字は何だと思っているわけ?
「どこにある」という情報をもつもの、という点で同じだぞ
だから for(i = first ; i != last; ++i) において first や last や i が
整数であろうがポインタであろうがイテレータであろうが
同じ論理が通用するんだろうがよ
ポインタで範囲外アクセスこくような大馬鹿者が
整数ならそんなことないとでもぬかすのか?

505:デフォルトの名無しさん
17/08/31 23:24:55.90 JYM1pg890.net
>>472
おまえC++やCよりも前に何かやってただろ
俺だってC++をCより先に憶えたクチで
そんな真似ができたのはアセンブラ使いだったからな
間接の概念をまっさらから憶えるのに
イテレータは無駄に難しいマゾプレーだつってんだ
ポインタわかっててもハンドルで悩むやついるくらいで
それに輪を掛けて++まであるのがイテレータであって

506:デフォルトの名無しさん
17/08/31 23:27:04.06 JYM1pg890.net
>>4


507:88 悪かったよ そのようで



508:デフォルトの名無しさん
17/08/31 23:32:03.77 SvYtbMXE0.net
>>471
まだ説明してないのか。説明頼むよ。キミが言い出したことなんだよ。

509:デフォルトの名無しさん
17/08/31 23:40:32.47 y40vazij0.net
(void*以外の)ポインタ自体も生のアドレス概念からは抽象化されている。
指されるオブジェクトの型やサイズを持っているんだからね。
それをさらに(ある方向に)抽象化したものがイテレータなんであって、そのように段階を追って
抽象化されていくストーリーを語るのは初心者向けにも有意義だと考える。

510:はちみつ餃子
17/08/31 23:59:46.91 Ev17QaWq0.net
イテレータに限らないけど抽象化されたものは抽象化されたままで扱わないと抽象化した意味がなくて、
(内部の実装を意識しなきゃならないのなら抽象化の甲斐が無い。)
一方では、その抽象化を作る側になることもあるので抽象化が出来上がるまでは抽象化の内側も知ってなきゃいけない。
つまり、層を積み重ねるたびに抽象化の壁を作っていくってのがプログラムを構成する基本的なやり方だろう。
だから、プリミティブな方から積み重ねながらその抽象化が意味するところを学ぶってのは普通の方法だと思う。
そういう意味で >>493 に賛成。
抽象化の内側を知ってしまった人が抽象化の壁の向こうを忘れて抽象化されたものとしてだけ
扱うってのはそれなりにセンスがいるんじゃないかとも思うんだけど、
C/C++ の背景にあるセマンティクスは良くも悪くも機械の理屈なんで、
どうあがいても高級アセンブラだと割り切って泥臭いポインタの側から学ぶのがいいと私は思うよ。
その泥臭いところを頑張って隠してるのが C++ ってもんなんで、
泥臭いところを知ったら C++ の色んな機能が「あー、こういうの欲しかったわー」ってなってありがたみを感じる。

511:デフォルトの名無しさん
17/09/01 00:30:44.48 oWX+X4Ay0.net
ストラウストラップが言うにはC++は
低レイヤーにアクセスできる機能とオーバーヘッドが無く使いやすいように隠蔽できる機能を持っている言語というようなことを言っていて
低レイヤーの部分を知らなくていいとは言っていない

512:デフォルトの名無しさん
17/09/01 01:02:22.22 E+DzN2Xf0.net
アセンブラの代替言語なのだから当たり前だ。用途もOSやドライバ、マイコン向けばかりだ。
COBOL、FortranやPerl、C#やJavaの代わりに使う人などいない。
低層を隠蔽する機能などお呼びではない。

513:デフォルトの名無しさん
17/09/01 02:01:03.59 2msaHTP30.net
いやCOBOLの代わりには使うぞ
Fortranの代わりつーとCな客はいたねえ

514:デフォルトの名無しさん
17/09/02 16:34:51.42 Vkplowcj0.net
URLリンク(opencv.jp)
ここのソースコードをコピペしてコンパイルしようとしたのですが
関数 `cv::Mat::release()' 内:
test.cpp:(.text._ZN2cv3Mat7releaseEv[_ZN2cv3Mat7releaseEv]+0x47): `cv::Mat::deallocate()' に対する定義されていない参照です
collect2: error: ld returned 1 exit status
このようなエラー文が出てしまいます
使っているOSはdebian stretchです
/usr/include/opencv2には必要なファイルはありました
どのようにコンパイルすればいいのでしょうか

515:デフォルトの名無しさん
17/09/02 16:50:32.70 8FAKxNXu0.net
環境依存すれってなくなったの?

516:片山博文MZ
17/09/02 16:53:40.92 bEjlZdoBd.net
>>498
ライブラリをリンクする。

517:片山博文MZ
17/09/02 17:01:02.17 bEjlZdoBd.net
>>500
【初心者歓迎】C/C++室 Ver.101【環境依存OK】 [無断転載禁止]2ch.net
スレリンク(tech板)

518:デフォルトの名無しさん
17/09/02 17:02:35.03 8FAKxNXu0.net
ないすー。

519:デフォルトの名無しさん
17/09/02 17:03:12.44 Vkplowcj0.net
>>501
すみませんでした
こっちで質問してみます

520:デフォルトの名無しさん
17/09/02 18:03:57.34 qkqtxzLpd.net
c++に限った話じゃないんだけど参考書
とかだとメソッドの後にフィールドが
書かれてる事が多いようだけど、それが
一般的なの?

521:デフォルトの名無しさん
17/09/02 18:45:42.87 qDvIb2f40.net
ちがう
一般的にはフィールドたるメンバ変数の方が先に来る
学習の都合で、メンバ変数を先に説明した方が、どう考えてもラク
メンバ関数を先に説明すると、入門書を読むレベルの初心者は間違いなく混乱するので、そんな参考書はまず見かけない
そもそもメソッドの中で使う変数は始めに宣言しておかないと使えない
結論としてはあなたが用語の取り違えをしてる……としか

522:デフォルトの名無しさん
17/09/02 19:04:41.89 4lafg32N0.net
クラスのレイアウトの話じゃなくて?

523:デフォルトの名無しさん
17/09/02 19:23:47.80 FGRVT/X40.net
レイアウト、というとデータの並び順の意味にとられかねず語弊がある

524:デフォルトの名無しさん
17/09/02 19:28:16.32 4lafg32N0.net
じゃあ宣言の順序

525:デフォルトの名無しさん
17/09/02 19:57:46.29 l0rE+2Xa0.net
public、protected、privateの順に書いていくと
自然と変数はpublic関数の次に来るわ

526:デフォルトの名無しさん
17/09/02 21:02:43.47 EU1kDRi00.net
普通アクセス修飾子の順じゃなくてフィールド→メソッドの順じゃないの
カプセル化するから変数なんてほとんどprivateだろうし
変数は変数でまとめて書いてもらわないと混乱する

527:デフォルトの名無しさん
17/09/02 21:08:20.92 Wuw432Mc0.net
ユーザーにとって重要な項目から順に書く
つまり、public→protected→privateで
ユーザーに見せる必要のないprivateは一番下で

528:デフォルトの名無しさん
17/09/02 21:13:48.77 FGRVT/X40.net
変数の宣言と関数の宣言の順序がどうでも良いのは自明
メンバ関数の定義がメンバ関数内で使用するメンバ変数の宣言に先行する場合も実験する限り合法
(規格に具体的にどういう文言で規定してあるのかは知らん
まあ定義時点で不完全な型やら値やらはテンプレートの定義で頻出するから
あんま定義と宣言の順序にこだわらない処理系の作りなのだと納得しておく
しかしなぜかテンプレートの引数でない型の定義(または宣言)と使用には厳格な順序を求められる…
次のコードはビルドが通らない
class Baz {
// struct Bar; // 左のコメントアウトを外したら逝ける
 void foo(Bar& b);
 struct Bar { int x, y; }
};
多分Cとの互換性のために仕様がワケワカメになった例

529:デフォルトの名無しさん
17/09/02 21:17:46.72 RAQSA3Kg0.net
ルールが存在してwell documentedで、ガバナンスがきいていることが重要
お前らのオレオレ哲学なんかどうでもいい

530:デフォルトの名無しさん
17/09/02 21:19:59.11 EU1kDRi00.net
ああそっか、プロトタイプ宣言しなきゃいけないんだっけC++は
C#の脳で考えてたわ

531:デフォルトの名無しさん
17/09/02 21:51:57.26 MiX3UcgLr.net
>変数の宣言と関数の宣言の順序がどうでも良いのは自明
自明かねぇ
C++11は問題になる例が思いつかないがC++98,03,14はどうでも良くない

532:デフォルトの名無しさん
17/09/02 22:01:20.86 VLpwNclp0.net
コンストラクタ実行時のメンバ変数の初期化の実行順が、初期化子の記述順ではなくクラス定義での並び順に従うっていうのがあった気がするけど、新しい規格では変わったんだっけ?

533:デフォルトの名無しさん
17/09/02 22:10:24.95 pFkNGMyF0.net
>>516
うそーん、初期化子の記述順>クラス定義の並び順だと思ってた。
てか、宣言の並び順は無関係?
そら、警察官も道行く江添さんに聞きたくもなるわw

534:デフォルトの名無しさん
17/09/02 22:21:28.04 MiX3UcgLr.net
>>516
微妙な表現以外、特に変わったという話は聞いたことがない
C++03 12.6.2/5
Then, nonstatic data members shall be initialized in the order they were declared in the class definition (again regardless of the order of the mem-initializers).
C++20 draft 15.6.2/(13.3)
Then, non-static data members are initialized in the order they were declared in the class definition (again regardless of the order of the mem-initializers).

535:デフォルトの名無しさん
17/09/02 22:37:32.53 i6uhqYA10.net
>C++11は問題になる例が思いつかないがC++98,03,14はどうでも良くない
とか書いてるから何か制約が無くなるような変更があったのかと思って聞いたんでない?

536:デフォルトの名無しさん
17/09/02 22:39:43.42 FGRVT/X40.net
ちな漏れがどうでもよい(どんな順序でも問題ない)と言ったのは
変数の宣言と関数の宣言の順序(どちらを先にするか)だからな
これ豆な

537:デフォルトの名無しさん
17/09/02 23:00:05.29 MiX3UcgLr.net
C++11でもこれがあったか
struct A {
 int m;
 decltype(m) /*←mは先に宣言が必要*/ f() { return m; /*←mは後でもいい*/ }
};
C++11で緩和されたのは11章のどっか(忘れた)

538:デフォルトの名無しさん
17/09/03 15:24:44.62 5WRYI1ZX0.net
static メンバ関数と friend 関数の使い分けについて教えてください
どちらも似た機能だと思ってしまうのですが‥

539:はちみつ餃子
17/09/03 15:42:16.65 XXf7E2cS0.net
あ〜、そんなこと考えたことなかったけど、クラス (メンバ関数) 内部から見たら近いっちゃ近いのかも?
クラスを定義する側じゃなくてそのクラスを使う側の気持ちで考えて。

540:デフォルトの名無しさん
17/09/03 15:47:48.54 5WRYI1ZX0.net
friend 関数は public で,static メンバ関数は private で,て感じでこの前は書きました
普通はどうするものかをお聞きしたいところです

541:はちみつ餃子
17/09/03 15:55:23.63 XXf7E2cS0.net
すまんけど自明すぎてどう使い分けるとか説明できない。
使い分け以前にそもそも理解できているか怪しいと思う。

542:デフォルトの名無しさん
17/09/03 16:12:00.06 5WRYI1ZX0.net
何度も宣伝するようで気が引けますが,前に書いたのは >>158
演算子のオーバーロードに絡むものは基本 friend で,内輪で使うものは private の static メンバ関数で,
くらいの線引きをしています.
書いてみてわかったのは「自明」という感じはしないこと,かな,考えてみれば friend 関数って他の言語にはなさそうです

543:デフォルトの名無しさん
17/09/03 16:48:05.14 jXGwZqzU0.net
何で? operatorはグローバルに出さなくても多重定義候補に挙がるぞ
俺は別の理由でoperatorをグローバルにする傾向があるが

544:
17/09/03 17:05:16.51 5WRYI1ZX0.net
>>527
URLリンク(codepad.org)
ほー,これは不思議だなあ‥
friend をはずすとコンパイルできない
friend をつけてしまうと public に置こうが private に置こうが関係ない,という認識であっていますか?

545:デフォルトの名無しさん
17/09/03 17:23:08.48 jXGwZqzU0.net
何が不思議?
friendを外すとメンバoperator+に過剰な仮引数となりエラー
friendは「メンバではない」のでアクセス指定は無関係
1点だけ気になるのが、friendは当該クラス自体と同じスコープに新しい識別子を導入しないはず・・・
識別子はoperator+で、これのみは某か標準のヘッダで既に宣言されているということか?

546:
17/09/03 17:29:26.39 5WRYI1ZX0.net
>>529
>operator+に過剰な仮引数となりエラー
つまり operator+ の >>528 とは違うもう一つの呼び出し書式にしないといけないわけですね.
でもこの場合は private に置くとコンパイルできない
URLリンク(codepad.org)
friend はアクセス制御如何にかかわらず「強引にpublic にする」ように見えますね‥わからない‥

547:片山博文MZ
17/09/03 17:31:44.96 zmbOaeS6d.net
friendなら、その人のプライベートにアクセスできる。それだけの意味。

548:片山博文MZ
17/09/03 17:33:29.06 zmbOaeS6d.net
ある人のfriendなら、その人のプライベートにアクセスできる。

549:デフォルトの名無しさん
17/09/03 17:36:12.98 5WRYI1ZX0.net
>>531
>>522 をどうかよろしくお願いいたします.

550:デフォルトの名無しさん
17/09/03 17:39:19.97 jXGwZqzU0.net
>>530
強引にpublic・・・で憶えやすいならそれでいいんじゃね?
ちな俺の憶え方はメンバでないものをどうやってprivateにするんだ、だ

551:片山博文MZ
17/09/03 17:40:51.54 zmbOaeS6d.net
あるクラスX内部のstaticでpublicな関数fは、Xのインスタンスの存在に関係なくX::fという名前でアクセスできる。
あるクラスX内部のfriendな関数gは、X内部のプライベートなメンバーm_aにアクセスできる。

552:デフォルトの名無しさん
17/09/03 17:42:36.39 5WRYI1ZX0.net
>>534
確かに friend 関数は「メンバーじゃない」ですか‥main() と同じような普通の関数なわけですね‥

553:デフォルトの名無しさん
17/09/03 19:02:31.58 jXGwZqzU0.net
friendは他のクラスのメンバかも知れない
そういうときも俺の憶え方なら動揺せずに済む

554:デフォルトの名無しさん
17/09/03 19:05:08.53 /S0gLPFy0.net
メンバ関数より、メンバでもfriendでもない関数を使おう
って誰かが言ってた

555:デフォルトの名無しさん
17/09/03 19:11:23.65 jXGwZqzU0.net
欲しい機能がメンバでない関数で使えないとなれば
それはクラスの設計ミスないしはダサい設計だかんな
クラックできちまうのと違う提供すべき機能の欠落

556:デフォルトの名無しさん
17/09/03 19:52:56.95 yMO/rU630.net
またクズが暴れてるのか・・・

557:デフォルトの名無しさん
17/09/03 19:55:19.54 eN0Ud7+B0.net
>>530
(1) friendが無い場合
「z = x + y;」に出くわしたコンパイラは
 1. インスタンスxに対しするC::operator+(y)(1引数)の呼び出し
 2. グローバルな関数C operator+(C const& a, C const& b)(およびその亜種)の呼び出し
のあてはめを順次試みるがどちらの関数も宣言が存在しないからあてはまるものが無くエラーになる
(2) friendがある場合
friendがつくことでoperator+()はCのメンバ関数ではなく、グローバルな関数として宣言されたことになる
このとき「z = x + y;」に出くわしたコンパイラは、上の1、2の順で当てはめを試み、
グローバルな関数C operator+(C const& a, C const& b)の呼び出しと解釈する。
本来この関数はクラスCのprivateメンバにアクセスできないが、friendの力でそれができ、めでたくビルドできて動く。
細かい話は規格の人がフォローして☆ホスイ

558:デフォルトの名無しさん
17/09/03 21:08:24.75 Kvjfvtnar.net
>(2) friendがある場合
最も近い(内側の)名前空間の関数になる(11.3/6-7)
friend関数がメンバーではないことがC++14に明記されていなかったようで、C++17ドラフトに追記された模様(N4659 12.2/2)
<おまけ>
宣言の場所がクラス内という事情により、リンカーはともかくコンパイラーから存在が見えにくい関数となる
この関数を使うには
・名前空間スコープで明示的に宣言し直す
 C operator+(C const& a, C const& b);
・ADL(argument dependent lookup)でクラススコープの検索を発動させる
 >>541でoperator+が呼び出せているのはADLによる

559:デフォルトの名無しさん
17/09/03 21:36:42.85 Kvjfvtnar.net
つまりクラスの外で定義された関数をイメージすればいい
struct A { friend void operator+(A,A) {/**/} };
 ↓
struct A { friend void operator+(A,A); };
void operator+(A,A) { /**/ } // ただしADLが無いと見えない

560:デフォルトの名無しさん
17/09/03 21:38:57.90 ipvja13x0.net
ドット拡張とかすればいいのにね
int static_value.fanction() = 0; // function専用
vid functionx.function(char*p){} // function専用
ファイル内スコープなんて今時ほとんど使わないから無視するか識別子重なったら同一と見做すかして
ついでにドット型はファイル内の前方参照も無くし宣言を省けるようにするとかさ

561:
17/09/04 01:15:45.54 rnM3x3Xp0.net
>>541
>friendがつくことでoperator+()はCのメンバ関数ではなく、グローバルな関数として宣言された
なるほど,そんなところだろうと >>528 で考えておりました.
件のライブラリもどきでは,operatorX のみクラス外に公開できればいいので,friend 関数で公開しておりました
その他は(基本的に)(公開すらしたくなかったため)static メンバ関数でのprivate 宣言となりました.
そうしたいようにそう書けばいいのですが今一つ統一感を見えてなかったかもしれません.
>>540
すみません

562:デフォルトの名無しさん
17/09/04 06:46:46.49 bUZLYHBF0.net
>>522
static関数とfriendは全然違うし似てるとこなんてない

563:デフォルトの名無しさん
17/09/04 08:11:17.30 6a+3L2fAd.net
>>546
みなさんこれが典型的ななんの役にも立たない回答の好例です

564:デフォルトの名無しさん
17/09/04 08:13:10.29 t0m5bmxTM.net
煽ることしかできない奴乙

565:デフォルトの名無しさん
17/09/04 08:17:12.97 MR3pz7f3d.net
>>546
共通点はある

566:
17/09/04 08:28:42.00 CIc3tQw70.net
>>546
static 関数をpublic に置くか,friend 関数にするかの判断がよくわからないのです.
なにか指針があればうれしいのですが

567:デフォルトの名無しさん
17/09/04 08:37:44.08 MR3pz7f3d.net
呼ぶときにクラス名を書きたいか書きたくないかで判断
コンパイルした結果には大した差はない

568:デフォルトの名無しさん
17/09/04 08:51:25.02 EfQNUMljd.net
staticだとADLに引っ掛からないとか?

569:デフォルトの名無しさん
17/09/04 09:10:00.24 s4lmvNao0.net
クラスの外の関数とオーバーロードさせたければfriend
URLリンク(ideone.com)

570:デフォルトの名無しさん
17/09/04 10:13:49.53 roJHcSrip.net
なんでこんなどうでもいいことで30も消費してんの

571:デフォルトの名無しさん
17/09/04 10:38:52.68 Ly8n+qhB0.net
staticはメンバを触れない。friendは触れる。
それくらいしか違いないけどなぁ。
俺、フレンド関数はほとんど書いたことない。

572:デフォルトの名無しさん
17/09/04 10:42:45.81 EfQNUMljd.net
>>555


573:デフォルトの名無しさん
17/09/04 10:44:19.85 Ly8n+qhB0.net
違ったっけ。
staticってthisもってないんじゃなかった?

574:デフォルトの名無しさん
17/09/04 11:03:17.00 Ly8n+qhB0.net
URLリンク(ideone.com)
勘違いやったわ。ごめんなさい。
一個勉強になった。

575:デフォルトの名無しさん
17/09/04 11:51:31.64 ByDgWFhHM.net
メンバ変数をprotectedにする人ってなんなの?露出狂なの?

576:デフォルトの名無しさん
17/09/04 11:55:13.79 EfQNUMljd.net
そういう人が日本に一人二人いるかも知れないけど、気にするだけ損だよ

577:デフォルトの名無しさん
17/09/04 12:17:47.72 Ly8n+qhB0.net
継承しても触れるようにするためだけど。継承自体がほとんどない。

578:デフォルトの名無しさん
17/09/04 12:51:51.83 bUZLYHBF0.net
>>558
勘違いというのが勘違い

579:デフォルトの名無しさん
17/09/04 12:57:07.34 KIEUzmnzM.net
クラス内に定義されたstatic関数は、そのクラスのオブジェクトが存在しなくても使える関数ってのが本来の意味。
動的なオブジェクト状態には依存せず、静的なクラス構造のみに依存するからstaticね。
対してfriendは、自分をさらけ出す人を指定するめのもの。
stream のから呼び出されるオペレーターを定義する時には、既に完成している stream (だけ)に対して自オペレーターをさらけ出してしまうのがいろいろな意味で最も効率的。
以上から、friend関数は、静的ポリモーフィズムを関数レベルでお手軽に実現したいときに使うと思っている。

580:デフォルトの名無しさん
17/09/04 13:03:46.35 bUZLYHBF0.net
表層的に言うと
staticはグローバル関数をクラススコープにして、かつアクセス制御も効くようにしたもの
friendは>>531の通り
ただそれだけのこと

581:デフォルトの名無しさん
17/09/04 13:05:20.90 ByDgWFhHM.net
>>561
なんで素っ裸でコートきてんの?露出狂なの?って聞かれて
コート脱いだらちんこ見えるようにする為だよって答


582:えてんのと同じだぞ まったく…露出狂は社会に出ちゃいけない存在なんだから、もう二度とプログラミングするんじゃないぞ



583:デフォルトの名無しさん
17/09/04 13:05:58.55 ws3TkDjE0.net
仕様がグダグダですな。

584:デフォルトの名無しさん
17/09/04 15:31:51.46 xMNR7APW0.net
>>565
うまい事言うなあ
friendは「なんで俺にだけ素っ裸見せんの?露出狂なの?」と聞かれて
「だってお前友達じゃん。だからお前にだけ俺の裸見せてやんよ」と言ってるわけだしな」

585:デフォルトの名無しさん
17/09/04 16:26:06.19 pd3pCmCq0.net
あれだろ
日本語のガールフレンドと
英語のgirl friendじゃ意味が違うというアレ

586:デフォルトの名無しさん
17/09/04 16:40:24.27 Ly8n+qhB0.net
>>565
あんたに決められる筋合いはねー。災いあれ。

587:デフォルトの名無しさん
17/09/04 16:58:13.05 EfQNUMljd.net
friendはクラスの役割を適当に分担しながら実装の隠蔽を図るのにはまあ妥当な仕組みだろうな

588:デフォルトの名無しさん
17/09/04 17:07:07.44 pd3pCmCq0.net
継承をほとんど使わないってどんな分野だろう
俺んとこではポートを叩くときのプロトコルが
似ているようで少しずつ違うなんての普通にあるし

589:デフォルトの名無しさん
17/09/04 17:13:32.82 MR3pz7f3d.net
複数のクラスのfriendが可能
staticは1個だけ

590:デフォルトの名無しさん
17/09/04 17:15:33.44 EfQNUMljd.net
ダックタイピングじゃね?

591:デフォルトの名無しさん
17/09/04 18:52:24.45 s+p5aXGeM.net
>>567
親しき仲にも礼儀あり。
アクセサぐらい用意するよね。

592:デフォルトの名無しさん
17/09/04 19:06:46.17 CIc3tQw70.net
>>565
>もう二度とプログラミングするんじゃないぞ
わかりました,もう止めます‥

593:デフォルトの名無しさん
17/09/04 19:28:25.71 EfQNUMljd.net
C++のfriendが現実世界の友達と違うのは、最初に決めたやつ以外にfriendを増やすことは全く好ましくない、
という点だろう

594:デフォルトの名無しさん
17/09/04 19:58:54.95 ByDgWFhHM.net
>>569
publicにしてあるほうが、まだかわいげがあるよ
もう、これからはすべてpublicにしなさい

595:デフォルトの名無しさん
17/09/04 23:34:49.89 jzRaTvEE0.net
friendじゃなくfamilyが良かった気がする

596:デフォルトの名無しさん
17/09/04 23:45:07.31 pd3pCmCq0.net
そうだね、ニュアンス的にはそっちだ

597:デフォルトの名無しさん
17/09/05 10:50:00.46 D99g/mXF0.net
>>578
#define family friend
で行ける?

598:デフォルトの名無しさん
17/09/05 12:19:42.29 FAzSlJ+ld.net
#define amigo friend

599:デフォルトの名無しさん
17/09/05 12:30:05.08 eN2J5TsS0.net
#define brother friend

600:デフォルトの名無しさん
17/09/05 13:50:03.50 MHv2cVQ40.net
printf("We are the World."); ←わかる
cout << "We are the World" <<endl; ←わからない
printfは「関数」だからわかります。
coutの<<はシフト?よくわからないです。
なぜC++はこんな文字の出力のさせ方にしたんでしょうか?関数じゃダメだったんですか?

601:デフォルトの名無しさん
17/09/05 13:54:25.72 5+GcycqS0.net
方法が増えただけ
以前どおり関数でも大丈夫だよ

602:デフォルトの名無しさん
17/09/05 14:03:50.06 CTfci4Vl0.net
>>583
<<は演算子オーバーロードだけどcoutなんて使う必要ないよprintfでOK

603:デフォルトの名無しさん
17/09/05 14:04:00.15 5KjI8r3d0.net
>>583
それはまさにC++の作者(以下、禿)が
彼の著書でアピールしていたことだ
coutとは何か? <<とは何か?
記号と意味はどこでどのように関連付いているのか
意味は関数で表記することにしよう
<<の意味を表記する関数の関数名をoperator<<としよう
プログラム言語の命令とデータは動詞と目的語だ
動詞は関数と1対1対応でよいが目的語の定義は動詞の蓄積だ
・・・てな具合

604:デフォルトの名無しさん
17/09/05 17:31:12.14 LcvSXQg0d.net
>>583
シフト演算子を全く別の意味に使う
ひどい設計だと思う

605:デフォルトの名無しさん
17/09/05 18:16:33.48 FAzSlJ+ld.net
それほどでもない

606:デフォルトの名無しさん
17/09/05 18:16:37.41 deDONG/TM.net
cout.<<("We are the World"). <<(endl);
があれば少しはマシだったかね。

607:デフォルトの名無しさん
17/09/05 18:45:41.20 fgaIXgJY0.net
>>583
演算子のオーバーロードのよいお題ということで無理矢理ねじこんだんじゃないかな

608:デフォルトの名無しさん
17/09/05 18:48:59.76 Ol0Fklqi0.net
using namespace std;
double value = 1.23;
cout << "value = " << value << endl;

609:デフォルトの名無しさん
17/09/05 19:06:29.40 /x4Q9Nfh0.net
>>587
お約束を破っているが流し込んでる感が出ているので芸術点高い

610:デフォルトの名無しさん
17/09/05 19:25:16.50 FAzSlJ+ld.net
+-*/と違って<< がシフト演算子なんて決まってないから「本来と違う」なんて意味なさない

611:デフォルトの名無しさん
17/09/05 19:34:59.61 TUBHCjnbM.net
vectorオブジェクトが破棄されるとき、要素の解放順は要素順であることは保証されていますか?

612:デフォルトの名無しさん
17/09/05 19:39:42.84 DJL8TJyoM.net
>>594
されてない

613:デフォルトの名無しさん
17/09/05 19:39:47.76 LcvSXQg0d.net
>>593
いや決まってる
ライブラリを抜きにした純粋な言語ではシフトの意味しかない
元の言語のC言語も同じ
* の方がいろいろな意味で使われている

614:デフォルトの名無しさん
17/09/05 19:42:00.05 FAzSlJ+ld.net
>>596
べつにc/c++の話じゃなく、一般に<<をIOの意味で使ってもなんとも思わんでしょ
+-*/はさすがに刷り込まれている

615:デフォルトの名無しさん
17/09/05 20:04:52.50 Xvi9WQb30.net
数学の演算子とプログラム言語の演算子のことじゃないかな。
+ - は数学とプログラム言語で一致
* / は数学と違うけど文字セットに乗除の記号がないし妥当な代用
<< をシフトに使うのはC系プログラム言語の独特の使い方
だったら << が出力になってもええじゃないか、という話。

616:デフォルトの名無しさん
17/09/05 20:10:04.82 CG6xGPaC0.net
向きは違うけどbashみたいなイメージだと思ってた

617:デフォルトの名無しさん
17/09/05 20:10:32.88 gdvLxkwI0.net
お前がそう思うんならそうなんだろうお前ん中ではな

618:片山博文MZ
17/09/05 20:11:08.83 HWiXORhGd.net
数学では、比較してずっと小さい、ずっと大きいという意味で<<、>>を使うことがあるみたいだが。

619:デフォルトの名無しさん
17/09/05 20:11:12.82 TUBHCjnbM.net
>>595
ありがとうございます
保証するにはどうすればいいですか?
ググってstackoverflowとか見たんですが、できないという人もいたり
clear()を使えという人もいてよくわかりません

620:デフォルトの名無しさん
17/09/05 20:17:36.79 5KjI8r3d0.net
禿が言い出した<<と
おまいらが言い出す<<では
悪いが社会への影響度がまるで違う
大勢のPGが<<はI/Oだと素直に従うかどうかでだ
新しい言語に旧来の言語と似た記号が出てきたからって
同じ意味でなければならないという法はどこにもない

621:デフォルトの名無しさん
17/09/05 20:19:03.84 D99g/mXF0.net
>>602
なんで順番が気になるんだ?

622:デフォルトの名無しさん
17/09/05 20:21:01.51 eN2J5TsS0.net
ローテート命令が演算子化されてないのは何故なんだぜ?

623:デフォルトの名無しさん
17/09/05 20:58:17.14 TUBHCjnbM.net
自己解決しました
>>604
必要な場面がありまして

624:デフォルトの名無しさん
17/09/05 21:12:58.72 Eko3GwfuM.net
printfをモダンにアレンジして新規格作ればいいのに。

625:デフォルトの名無しさん
17/09/05 21:50:59.32 5KjI8r3d0.net
>>605
それな
俺も


626:時々欲しくなるんだけど キャリーを含む/含まないとかCHAR_BITの違いとかで 移植性が確保しにくそうだよな 記号を何にするかなんて後から決めりゃいいことだ



627:デフォルトの名無しさん
17/09/05 22:29:35.14 NIuXE25q0.net
>>605
ローテートなんて頻繁に使うものじゃないから
ビットが立ってる数を数えるとか、
ビットが立ってる位置を調べるとか、
バイト単位の並び替えとか、
小数から整数へ四捨五入とか、
他にいくらでも足したいものはある

628:デフォルトの名無しさん
17/09/05 22:54:34.26 DO26xGrR0.net
誰がこんなクソ言語つくったんだよ
作者はたぶんバチが当たって禿げてるはず

629:デフォルトの名無しさん
17/09/05 23:01:40.29 nPfvfHCk0.net
だいたい最初にアスタリスクを乗算演算子にした奴は誰だよ。

630:デフォルトの名無しさん
17/09/05 23:58:08.13 5KjI8r3d0.net
ジョンバッカスだろ

631:デフォルトの名無しさん
17/09/05 23:58:19.96 qAaUk7C50.net
operator:=とかoperator!?とか定義できるようにしてくれたら
お前らが度肝を抜くような使い方して見せるのに、残念でならない。

632:デフォルトの名無しさん
17/09/06 00:21:11.51 eLdBXtqw0.net
operator?:ならマジで提案してみそ
あわよくば大手柄だぞ

633:デフォルトの名無しさん
17/09/06 00:25:00.50 VYubvLfh0.net
>>613
コンパイルエラーになろうが、ソース書くだけなら現状でもできるだろうから、度肝を抜いてくださいな。

634:デフォルトの名無しさん
17/09/06 00:47:00.85 eLdBXtqw0.net
613なりのcxxfrontでも作ればいい

635:デフォルトの名無しさん
17/09/06 06:39:00.29 lz1Lh31S0.net
>>611
あなたならどれにする?

636:デフォルトの名無しさん
17/09/06 06:40:33.11 lz1Lh31S0.net
同じかどうかの比較が = ではないのが欠陥

637:デフォルトの名無しさん
17/09/06 07:17:47.41 xbyXQy+0M.net
>>615
なんか面白いこと言おうとしてるの?

638:デフォルトの名無しさん
17/09/06 08:45:25.92 6GspjXt70.net
>>618
BASICのように=の意味が文脈で変わるべきだと?

639:デフォルトの名無しさん
17/09/06 08:49:59.58 /Hhi3W4sd.net
いや、代入を別の記号に
それこそ := でも

640:デフォルトの名無しさん
17/09/06 08:50:33.96 ZK3Q9QYA0.net
いやっすいやっす!代入に2タイプも使うのいやっす!

641:デフォルトの名無しさん
17/09/06 08:51:14.26 DE0YQ4Kk0.net
数学の方を現代に合わせて変えるべき

642:デフォルトの名無しさん
17/09/06 08:57:40.90 zxwumig7M.net
>>623
勝手に変えたらどう?
数学はコンパイル不要だから、最初に定義さえすればお前の使いたい記号を好きなだけ使えるよ

643:デフォルトの名無しさん
17/09/06 09:44:12.68 f82uiC9X0.net
自民党の恐怖の言論弾圧が迫る! 
売国安倍は憲法改正で国民主権と基本的人権
を奪うつもりだ。 ← 民主主義の崩壊
URLリンク(www.data-max.co.jp)
↑ マスコミは 9条しか報道しないが 自民案
の真の恐さは21条など言論の自由を奪うこと
自民案が通ると 政府批判しただけで逮捕されるぞ!
URLリンク(www.youtube.com)
上のビデオで 自民党は 日本人に基本的人権
は必要ないと 異常なことを平気で言う。
URLリンク(xn--nyqy26a13k.jp)
↑ 都民ファーストも安倍と同じく 憲法改正で 人権
無視の大日本帝国憲法に戻すつもりだから
絶対に投票してはだめだ。 民主主義が崩壊する
URLリンク(blog.goo.ne.jp)


644:9f65988fe0f35496934dc972e2489 ↑ ネトウヨ= 安倍サポーター工作員はネットで国民を騙す。 https://dot.asahi.com/aera/2016071100108.html?page=3 http://blog.goo.ne.jp/kimito39/e/c0dd73d58121b6446cf4165c96ebb674 ↑ 安倍自民を操るカルト右翼「日本会議」は国民主権否定。 国民投票や選挙では自民党、維新、小池新党に絶対に入れるな。



645:デフォルトの名無しさん
17/09/06 11:33:15.11 Mqa6x7N10.net
2003年8月の第1回から2007年3月の第6回までいずれも中国北京で計9次の会合が行なわれた
話し合いで解決しなかった
原爆、弾道ミサイルの開発にカネ、時間を与えてしまった
軍事力でつぶすしかないのに、まだこんなこといってる

         ,,-―--、
        |:::::::::::::;;;ノ  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
        |::::::::::( 」 < 対話で解決しよう
        ノノノ ヽ_l   \______________
       ,,-┴―┴- 、    ∩_
     /,|┌-[]─┐| \  (  ノ
      / ヽ| |  バ  | '、/\ / /
     / `./| |  カ  |  |\   /
     \ ヽ| lゝ    |  |  \__/
     \ |  ̄ ̄ ̄   |
      ⊂|______|
       |l_l i l_l |
       |   ┬   

646:デフォルトの名無しさん
17/09/06 12:26:18.39 8RU3q9uiM.net
>>623
数学は、最初に定義さえすれば自由にしていいんだよ。

647:デフォルトの名無しさん
17/09/06 12:36:56.86 /66SkMcqd.net
話が成り立たないアホばっかりだな

648:デフォルトの名無しさん
17/09/06 15:29:10.13 fXx7GStM0.net
プログラミング勉強し始めた初心者ですが
手詰まりになったので質問させてください
URLリンク(judge.u-aizu.ac.jp)
この問題をやっていますが、以下のコードで「Time Limit Exceeded」となってしまいます
他の正解者のコード見てもやってることは同じな気がするのですが
なにがいけないのでしょうか?
C++14コード
URLリンク(codepad.org)

649:デフォルトの名無しさん
17/09/06 15:33:28.13 I6k6pGLy0.net
多分出力のコードが間違ってる。

650:629
17/09/06 15:40:37.11 fXx7GStM0.net
追記です
Case#8までは「Accepted」でOKなんですが
Case#9が「Time Limit Exceeded」でした
Case#9は入力が2000000行もあるっぽいです
でも他の人とやってること自体は同じなんだから
このコードでできるはずと思い込んでしまって
何が悪いのかさっぱり検討つきません。。。

651:デフォルトの名無しさん
17/09/06 15:54:34.75 I6k6pGLy0.net
2個出力してみ?

652:デフォルトの名無しさん
17/09/06 15:55:29.34 I6k6pGLy0.net
あれ?勘違いだ。

653:デフォルトの名無しさん
17/09/06 15:59:43.73 I6k6pGLy0.net
Listそのものがそんなに早くないとかかなぁ。
デリートはO(1)で終わるけど、ポインタの付け替えとかあるから、雑に遅いカモね。
最近のコンピュータだと配列の方が早かったりする。

654:デフォルトの名無しさん
17/09/06 16:38:37.77 I6k6pGLy0.net
もしかしたら、sstringしてるのが重いかもなぁ。
cinで取れるのに何でssteamしてるのかよくわからん。

655:デフォルトの名無しさん
17/09/06 17:25:42.27 I6k6pGLy0.net
URLリンク(judge.u-aizu.ac.jp)
これで通った。

656:デフォルトの名無しさん
17/09/06 17:28:16.47 I6k6pGLy0.net
URLリンク(judge.u-aizu.ac.jp)
すまんこれでは通らなかった。

657:デフォルトの名無しさん
17/09/06 17:33:31.55 I6k6pGLy0.net
URLリンク(judge.u-aizu.ac.jp)
これは通った。

658:デフォルトの名無しさん
17/09/06 17:37:32.00 I6k6pGLy0.net
適当なこと言ってすまんかった。

659:デフォルトの名無しさん
17/09/06 18:55:53.01 p


660:ROvgKjd0.net



661:デフォルトの名無しさん
17/09/06 19:15:05.29 fXx7GStM0.net
>>630
>>632-639
ありがとうございます!
まさに>>635だったみたいです
1行ごとに入力を読み込みたいからsstream使ってたのですが
そのせいでwhileループで毎回sstreamとstringの変数を定義しているせいでした
cinとstringだけで入力を読み込むようにして
変数の定義をループの外にしたらようやく自分のコードで通りました
sstream使わなくてもstring変数の定義をループ内に書いたままにしてたら
ずっと通らなくてそれで何時間も四苦八苦してようやくすっきりしました
変数の定義って思いの外処理時間がかかるんだなあとしみじみ実感しました
わざわざコーディングまでしてくださってありがとうございました

662:デフォルトの名無しさん
17/09/06 21:33:01.28 6GspjXt70.net
> 変数の定義って思いの外処理時間がかかるんだなあとしみじみ実感しました
ものによる
テキトーこくな

663:デフォルトの名無しさん
17/09/06 21:57:51.28 P+VnvHZA0.net
>>642
> ものによる
string だろ
話の流れも読めないのか?
> テキトーこくな
実際にやってるだろうに何を言ってるんだよ
いちゃもんつけたいだけか?

664:デフォルトの名無しさん
17/09/06 22:53:02.57 OHCEwHay0.net
変数の定義って処理なのか?
stringが遅いのはどの言語でも同じ。ヒープに確保してるから。
Cの特権は固定長ならスタックに文字配列を確保できること。

665:デフォルトの名無しさん
17/09/06 23:16:43.16 LeFS08p/0.net
>>644
COBOLとかFORTRANヒープの概念があるとは

666:デフォルトの名無しさん
17/09/07 00:17:30.43 E8QDgFBm0.net
デフォルトだとcinがstdioと同期取ってやたら遅かったりもする罠

667:デフォルトの名無しさん
17/09/07 02:37:57.68 t89SIQGa0.net
コンストラクタがやけに重いクラスとかあるんだよ、標準でも。

668:デフォルトの名無しさん
17/09/07 06:02:40.83 sowmLjiv0.net
C++のstream関連は全て糞
operator<<()の多重定義で自作クラスのフォーマット文字列化(stringizing)ができる、というのがちょっと嬉しかったけど
しょせんコードの見かけだけの話やし、実行速度は速いし改造もしにくい、
(printf()ならvprintf()を使って関数1個書けば良いところをstd::streambufの派生クラスを作る羽目に、、
 行単位の排他とかの作り方を比べたらワカル
だいたい一般に1つのクラスに対して一般に
 (1) 人間が読むためのフォーマット文字列化
 (2) ストレージか何かへのシリアライズ
 (3) ストレージか何かからのデシリアライズ
の3つの要求が生じるのに対してoperator<<()とoperator>>()の多重定義の2個では数が足りない
だったら上記3メソッドのインターフェースを全部Cのstdioベースで実装して済ませるわ;
とにかくC++の中にあってstreamはパフォーマンスよりもコードの見かけに拘ってみました感が異端

669:デフォルトの名無しさん
17/09/07 06:46:38.33 9W4DbE9gM.net
>>644
> 変数の定義って処理なのか?
コンストラクタって知ってるか?
> stringが遅いのはどの言語でも同じ。ヒープに確保してるから。
そもそもstring型はすべての言語にないし文字列型と言う意味ならFORTRAN77のように固定領域にとる言語もある
>>645
モダンなバージョンなら普通にあるでしょ
Fortran ⇒ Allocate 文
Cobol もオブジェクト指向になってるぐらいだからあると思う

670:デフォルトの名無しさん
17/09/07 07:52:40.01 E5YdMpMh0.net
相談室ということで
C++でディープラーニングのライブラリといったらTensor Flowとtiny dnn以外にあります?

671:デフォルトの名無しさん
17/09/07 08:09:04.47 6e0QaN8o0.net
>>650
ソニーから nnabla だったかな

672:デフォルトの名無しさん
17/09/07 08:40:05.33 BwtgUJJf0.net
ライブラリなど不要

673:デフォルトの名無しさん
17/09/07 12:48:57.45 ccNhwHbvd.net
学習など不要

674:デフォルトの名無しさん
17/09/07 12:51:16.16 m/W0Vwq0M.net
>>648
おちつけ。
> 実行速度は速いし改造もしにくい、
> だいたい一般に1つのクラスに対して一般に

675:デフォルトの名無しさん
17/09/07 15:45:42.89 lWzPhy/F0.net
>>649
つまりインスタンス生成を「変数の定義」って言ってるのか。分りにくいな。

676:デフォルトの名無しさん
17/09/07 16:59:31.64 WeVFjmVDd.net
宣言でなく定義ならそういうことだろう

677:デフォルトの名無しさん
17/09/07 17:17:37.39 E5YdMpMh0.net
>>651
ありがとうございます
調べてまいります

678:デフォルトの名無しさん
17/09/07 23:11:06.34 sowmLjiv0.net
でけた!
URLリンク(judge.u-aizu.ac.jp)
>>654
スマンorz

679:デフォルトの名無しさん
17/09/08 10:17:30.47 28eiJ4Rm0.net
>>658
お、ちょっと早いな。

680:デフォルトの名無しさん
17/09/08 21:05:50.39 VlEBq8a5M.net
>>648
モダンな言語の多くはprintfライクだし、javaも結局追加された。
printfライクのほうが効率的なことは経験的にわかってるのだからstreamにイマドキのformat関数を追加してくれればいいのに。

681:デフォルトの名無しさん
17/09/08 21:16:51.55 EwiEYpeM0.net
もっと50 msばかり速くすた、
URLリンク(judge.u-aizu.ac.jp)

682:デフォルトの名無しさん
17/09/08 22:55:01.80 EwiEYpeM0.net
さらに1桁速くしたわふーん(0.65 sec → 0.06 sec)
URLリンク(judge.u-aizu.ac.jp)
メモリ消費量も1/4未満になた、(34520 KB → 7432 KB)

683:デフォルトの名無しさん
17/09/09 14:52:21.58 4g0rauvm0.net
>>662
それって双方向連結リストなの?

684:デフォルトの名無しさん
17/09/09 19:52:47.52 FtyOtgZ20.net
URLリンク(ideone.com)
これ、なんで通らないの?
頭爆発しそう。

685:デフォルトの名無しさん
17/09/09 20:19:57.93 FtyOtgZ20.net
あぁ、色々いじってたら通った。
わけわかめ。

686:デフォルトの名無しさん
17/09/09 20:23:23.69 FtyOtgZ20.net
と思ったらイデオンGCCで動かねーでやんの。
URLリンク(ideone.com)
VC2017では動く魔法のコード。

687:デフォルトの名無しさん
17/09/09 20:39:58.02 iTjZctD80.net
もちつけ URLリンク(ideone.com)

688:デフォルトの名無しさん
17/09/09 20:47:48.75 FtyOtgZ20.net
うほ。素晴らしい。
が、今度はVCで動かなくなった。
なんじゃそれ。

689:デフォルトの名無しさん
17/09/09 21:07:39.82 FtyOtgZ20.net
なんか、VCもGCCも半分くらいずつ間違えてる予感。
Setだけだとストレージがないからなんかバグの予感するし。
ストレージ持たせようとすると修飾が間違ってるって言われてる感じがする。
なんだこれ。

690:デフォルトの名無しさん
17/09/09 21:15:58.82 FtyOtgZ20.net
識者求!急募だ!!

691:デフォルトの名無しさん
17/09/09 21:53:02.98 FtyOtgZ20.net
URLリンク(ideone.com)
これで手打ち。
よくわからん回り方されたなぁ。
とほほほ・・・。

692:デフォルトの名無しさん
17/09/09 21:58:32.95 FtyOtgZ20.net
最後に。さんきゅーそー。

693:デフォルトの名無しさん
17/09/09 23:23:25.26 iTjZctD80.net
VC++のバグ…ではなくいつもの標準非準拠の独自仕様の気はする
URLリンク(ideone.com)

694:デフォルトの名無しさん
17/09/10 00:32:56.15 8Jhjgi9Q0.net
>>673
およ、折衷案できそうか?
自分はVC動けばいいんだけど、
コード公開するときに動かないと間抜けっぽいから良対応しようと一応やってる。
visualデバッガが便利すぎてVCやめるの大変。

695:デフォルトの名無しさん
17/09/10 00:56:23.48 ldnMOHDz0.net
デバッガのフロントエンドは自作するもの

696:デフォルトの名無しさん
17/09/10 00:57:46.72 9qoMDsB9r.net
完全な解決策も規格の規定も知っているが、
再現する最小限のコードにしてから他人に見せる知能も持ち合わせていない者には時間の無駄

697:デフォルトの名無しさん
17/09/10 02:34:17.64 8GGB49VK0.net
非修飾名


698:フ探索の問題だから発想を変えて明示的修飾で回避すればいいって話? https://ideone.com/YTnOF2



699:デフォルトの名無しさん
17/09/10 06:00:54.71 Jp2o0TJ00.net
templateの使い方を完全に勘違いしてやがる。

700:デフォルトの名無しさん
17/09/10 07:35:26.76 8Jhjgi9Q0.net
折衷案色々あるなぁ、感心する。
>>676
別に個人のコードでどこかに迷惑かけてるわけじゃないし、この程度のコードも読めない方が問題。
それに高慢なお方は最初から相手にしてない。マウントしてほしくてやってるんじゃないんだよ。

701:デフォルトの名無しさん
17/09/10 07:49:26.32 8Jhjgi9Q0.net
URLリンク(ideone.com)
>>677を採用。これで解決しました。
明示の仕方がいまいちよくわかってなかった。
大変ありがとうございました。

702:デフォルトの名無しさん
17/09/10 10:50:41.00 Ch3ZHKVB0.net
プロパティー実装例か…
しかしまぁクソ面倒だ罠

703:はちみつ餃子
17/09/11 21:22:51.45 +dEH7rh50.net
auto で受けるとおかしげなことになるんちゃう?

704:デフォルトの名無しさん
17/09/12 01:44:38.63 uA5S/Coo0.net
馬鹿に触らせるなテンプレートって昔から言うしな。
フレームワークのテンプレートライブラリ提供する側だけが使っていいんだよ。

705:デフォルトの名無しさん
17/09/12 08:52:24.85 n2tkiU0+0.net
テンプレートはSTLやboostのまねをしていれば下手なことにはならないはずだが

706:デフォルトの名無しさん
17/09/12 08:56:45.99 aShF6cdKa.net
真似するだけでも、それなりのスキルが必要だ

707:デフォルトの名無しさん
17/09/12 09:35:13.31 M9yu8us30.net
何故そういうコードになっているかを理解せずに猿真似して意味があるかどうかはわからんけど
autoで受けるとおかしなことになるのは、キャストや代入で望む結果を得る方法(expression templateなど)全部そう
暗黙のキャストでなく関数呼び出しを強制すればautoでも大丈夫だけど

708:デフォルトの名無しさん
17/09/12 10:11:33.04 CGKPtYms0.net
> 馬鹿に触らせるなテンプレートって昔から言うしな。
自分が触りたくないのはわかったから

709:デフォルトの名無しさん
17/09/12 19:29:46.28 mgCIj6GX0.net
>>682
コピコン切ってあるから大丈夫だと思う。あとは推論性能。

710:デフォルトの名無しさん
17/09/12 19:43:33.31 8IhLGzTX0.net
コピコン

711:デフォルトの名無しさん
17/09/12 20:29:35.11 mgCIj6GX0.net
コピーコンストラクタ!

712:はちみつ餃子
17/09/12 22:54:11.94 cQiNwo4o0.net
>>688
あ、なるほど、状況を勘違いしてた。
C++17 からは RVO が使える場合は常に RVO で処理する (従来は「してもよい」というオプショナルな動作) ことと、
そのときはコピー (ムーブ) コンストラクタが無くても良いというルールが念頭にあったのだけれど、
この場合は RVO は関係なかった。 スマソ


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

556日前に更新/267 KB
担当:undef