C++相談室 part157

■ このスレッドは過去ログ倉庫に格納されています
2021/08/09(月) 10:57:31.60ID:JaaB5Egp
前スレ
C++相談室 part156
https://mevius.5ch.net/test/read.cgi/tech/1621389313/
2021/08/09(月) 14:34:07.65ID:aCXIbwxy
std::vectorの部分ベクトルの切り出しって絶対O(要素数)の計算量かかりますよね?
2021/08/09(月) 14:40:14.51ID:fi8SjIox
「部分ベクトルの切り出し」とは何かを定義せよ。
2021/08/09(月) 14:47:54.30ID:eF2Q2UUf
こういうの?
std::vector<int> a{ 4, 6, 4, 9 };
std::vector<int> b(a.begin() + 1, a.begin() + 2);
2021/08/09(月) 15:11:52.58ID:KzU8BZnC
参照できればいいのか、コピーがいるのか、切り出し位置はわかってるのか、検索を伴うのか、
その辺の条件もなしに計算量の議論なんて出来んわ
2021/08/09(月) 16:11:11.49ID:6v1cUfUr
クラスAの内部にクラスBがある (入れ子クラス) として、BからAのメンバにアクセスするテクってないんですかね?
アクセスしたいメンバをstaticにはしたくないです
2021/08/09(月) 16:20:25.36ID:GC6B710d
>>20
AへのポインタをBに定義して、コンストラクタかなんかで渡せばいいのでは?
2021/08/09(月) 16:48:43.56ID:OWI9S7jW
>>20
クラスの中でクラスを定義しても A の名前空間の中に B が定義されるってだけ。
B のオブジェクトを作っても A のオブジェクトが存在しないなら存在しないオブジェクトのメンバにはアクセスできない。
A のオブジェクト (インスタンス) と B のオブジェクトの間には勝手に関係が出来たりもしない。
関係ないのに関係あるように見えて初心者が混乱してるのはどっかの質問サイトでも見たことがある。
よく理解できてないならまずはクラスの定義を入れ子にせずにやってみるのがオススメ。
2021/08/09(月) 16:52:51.13ID:S8n0VVLE
>>20
AやBのインスタンスをどう生成してるのよ
>>21の言うようにAへのポインタ持ってたら普通にアクセスするだけでしょ
class A {
public: int i;
class B {
public: B(A* a){ … = a->i; }
}
}

auto b = new A::B(new A());
2021/08/09(月) 16:59:35.77ID:eF2Q2UUf
>>19
コピーか参照かは1要素あたりの処理量なので
コンテナの計算量には関係ない
2021/08/09(月) 17:00:48.11ID:hJGoZPOe
絶対レビュー通らないウンココードでよいなら
(char*)this + offsetof(A, b)でなんとかならんのか
2021/08/09(月) 17:33:38.90ID:GC6B710d
class Aをtemplate化して、class BでAを継承すれはメンバにはアクセスできるけど、たぶんそういうことがしないんじゃないんだろうなw
コンテナクラスのイテレータから親クラスインスタンスのメンバにアクセスしたいとかか?
2021/08/09(月) 17:48:31.00ID:eF2Q2UUf
リファレンサを作るときなんか親オブジェクトへのポインタ使うね
2021/08/09(月) 20:07:17.09ID:XVy1LhuX
>>23
普通にコンポジションで実現できる条件だよな
メルプラネットの奴らも同じこと言いそう
2021/08/10(火) 00:55:38.92ID:rk6SLsdN
親オブジェクトへのポインタをうっかり共有ポインタにすると循環参照の原因になる(小並感)
2021/08/10(火) 03:53:30.08ID:mPLpHQ1a
+=の引数が1のときは++を呼ぶようにする方法ってありますか
2021/08/10(火) 04:41:55.83
>>30
自分でそう書くのがいいのでは?
(n == 1) ? x++ : x += n;
2021/08/10(火) 08:16:11.83ID:JssHBcjd
>>30
遅くなる可能性があるから気にしない。
コンパイル時に解決できるなら++使っても同じだし、実行時に解決するようだと1かどうかの判定が増えて遅くなる。
2021/08/10(火) 12:11:16.71ID:OMlKC5pQ
TCPIPのソケット通信プログラム作ろうと思っているのですが、
コネクションを維持し続ける場合のデメリットって何がありますか?
2021/08/10(火) 12:42:43.27ID:ZRv1Vy3I
>>32
後出しになって申し訳ありませんが、*、!=、++、+=、- 辺りが定義されたイテレータを持つ自作のデータ構造を範囲for文で走査することを考えています
それ自体は想定した通りにできたのですが、その範囲for文をomp並列化するとイテレータのインクリメントが ++ でなく +=1 で行われるようになります
で、その自作データ構造では ++ よりも += の方が重い実装になっているので、+=1 よりは ++ の方を使ってほしいです

omp に特有の仕様に思えるので、普通に += の冒頭で引数が1かどうかの分岐を入れることにしようかと思います

ありがとうございました
2021/08/10(火) 14:57:46.78ID:W7aMf5pX
マルチスレッドのキューのサンプルをSTLで作りゃったーしたったわ、
https://ideone.com/bS7rqc

↓ここのC#のサンプルプログラムの移植
// https://atmarkit.itmedia.co.jp/ait/articles/1801/31/news023.html

フラグの必要性は意味を取り違えていたわサーセン、
しかしこれフラグ(runningFlag)無しでやるとしたら終了時にConsumerがいちいちProducerが
join可能か調べる(std::thread::joinable())ことになってスレッドより先にプログラムした人が終了したくなるお
フラグで済むのに、
2021/08/10(火) 15:21:27.23ID:W7aMf5pX
Windowsのイベントオブジェクトと条件変数の違いまとめ
https://dev.activebasic.com/egtra/2011/09/19/413/
2021/08/10(火) 15:28:07.54ID:W7aMf5pX
と思ったがやっぱ当初の意味(Producerが待っているのかどうか)のフラグが無いと、
キューが空になった後のnotifyで、1万個あるかもしれない仕事の無いConsumerが次々起床され、
巡り巡ってようやくProducerが起床されるみたいな非効率が生じる余地があるやんけ;;;

やっぱ当初の漏れのフラグ必要という意見で正しかったのかもしんない
漏れは天才なのかもしんない、
かもしんない運転、
2021/08/10(火) 18:25:35.80ID:W7aMf5pX
つかその前に、漏れの天才eyesが改造元とした@IT様のサンプルプログラムに
スレッドのディスパッチ依存で終了できなくなることがあるという恥ずかしいバグを発見した、
論より証拠:
https://ideone.com/NbKdEQ

変更点は、Consumerを1個にして、Producerの側のある個所にsleepを入れただけ
(マクロ CAUSE_STOPPING_FAILURE_BUG で条件コンパイルで有効にしている個所
これでConsumerスレッドが終了できなくなる

対策は、同ソースコードの BUGFIX_STOPPING_FAILURE_BUG マクロを有効にしたら宜しい

天才の判断である
2021/08/10(火) 18:42:35.68ID:mYAwPqTL
>>34
すみません。この件なんですが、

void operator += (int n){
 if(n == 1){
  // ここ
 }else{
  ……
 }
}

「ここ」で演算子++を呼びたいときってどう書いたら良いでしょうか
++の中身をコピペしても良いのですが、
this -> ++
みたいなノリで呼び出せた方が都合が良いです
2021/08/10(火) 19:06:35.71ID:W7aMf5pX
というわけで最終的な版を貼る、
https://ideone.com/G3XeAg

ProduceとConsumerそれぞれに対する起床条件を分離すた、

日本語ではいくら説明しても一向に理解の光が射さなかったボンクラ学生レヴェルの>>15でも
100行足らずのソースコードなら読めるんじゃないの
知らんけど
2021/08/10(火) 19:11:32.09ID:cMFKuo8t
>>39
++(*this);
または
this->operator++();
2021/08/10(火) 19:24:28.15ID:mYAwPqTL
>>41
ありがとうございます
前置/後置の別が自分の中でよく付いていませんが、教えていただいたことに基づいて調べてみます
2021/08/10(火) 19:37:16.72ID:Lbev+Y0v
>>40
で、そこで取れると良い「スレッドの実行状態」って結局何なん?
2021/08/10(火) 20:32:27.09ID:W7aMf5pX
「スレッドの実行状態とは起こす対象のスレッドが具体的に何をしているか、や
とれると良い、ではなく取ることが必須や

なぜなら、WIN32APIのイベントは1回だけキューイングされるので投げたら投げっぱなしでもそのうち
受け取ってもらえるが、(pthread系統のしくみである)状態変数はそうではなく、
起床信号を投げつける前に相手が信号をキャッチ可能なのか(待ちに入っているのか)知る必要がある

なお、イベントのキューイングの有無によって話が変わる旨はすでに書いたある(>>997
上記のことを書いてあるというのに理解もせずにしつこく同じことを繰り返し言ってきたのが>>15
2021/08/10(火) 21:01:08.35ID:Lbev+Y0v
>「スレッドの実行状態とは起こす対象のスレッドが具体的に何をしているか、や

それって具体的にどういうものを想定しているんだろう。
もともとの話はstd::threadに追加したい機能だったと思うけど、この説明だけじゃ全然想像がつかない。
2021/08/10(火) 22:11:54.85ID:W7aMf5pX
なんか元にしたコードにまだ問題があった気配orz
MAX_QUEを1にすると高い頻度でProducerとConsumerが両方待ちに入ってしまいハングアップする、、、
対策版は多分これ↓で良いんジャマイカ……
https://ideone.com/at7ef9
(何が起きていて、どうしてこれで対策なのかはコメント参照、

>>45
>>「スレッドの実行状態とは起こす対象のスレッドが具体的に何をしているか、や
>それって具体的にどういうものを想定しているんだろう。
今回のサンプルコードでは具体的にはありません(キリ
しいて言えば!runningFlagならConsumerが自身を待ちに入れない(∵Producerがもう起こしてはくれない
というのはあるが、>>35に書いた通りフラグ以外の方法でも同じ判定を行える

言っていることにブレがあるのは今日pthreadを勉強したばっかりやし、
天才なので大目に見てホスイ、
2021/08/10(火) 22:25:26.70ID:W7aMf5pX
でもまあコメントを読んでいただければ、pthread系のしくみだと
起こす対象のスレッドが何をしているのかについて常に配慮が居るということをご理解いただけるのではないかと思う
今回はたまたま見込みでnotifyして話が通るからスレッドの実行状態を表す変数が具体的に生じなかっただけ
2021/08/10(火) 22:47:59.90ID:C0wcAbjz
すみません。
自作プログラムが特定のPCだけ同じ場所でntdll.dllのエラーで止まるのですが、何が原因と考えられるでしょうか?
他のPCでは問題無く進み、エラーを起こすPCのメモリにも異常は見つかりませんでした。
2021/08/10(火) 23:06:02.90ID:OOQ3UOoB
>>48
未初期化変数があって無効なアドレスにアクセスしたとかじゃね

確実なことを言うためには例外コードが知りたい
あと問題の箇所のソースコードも
2021/08/10(火) 23:24:57.75ID:C0wcAbjz
ソースはすみません、ちょっと出せないです
エラーコードは0xc0000005でしま
2021/08/10(火) 23:30:51.53ID:OOQ3UOoB
はいメモリアクセス違反ですね
デバッガでがんばって調べてね
2021/08/10(火) 23:32:41.60ID:C0wcAbjz
あざす
53デフォルトの名無しさん
垢版 |
2021/08/10(火) 23:34:52.75ID:5fGESjxl
他の言語にはスレッド実行中か判定するAPIあるしstd::thread作った人達だってそのくらいのこと知ってたでしょ
boost::thread時代にそういった要望もあっただろうし
それでもあえてstd::threadにはスレッド実行中を調べる機能を付けなかった
本質的に必要な機能ではないと判断したんじゃないの?
2021/08/10(火) 23:44:13.15ID:rk6SLsdN
スレッドそのものの終了状態を知る需要はあまりなく、スレッド内で行われるユーザー定義処理が終わったかどうかが重要だからでしょ
2021/08/10(火) 23:50:54.98ID:Lbev+Y0v
>>47
>起こす対象のスレッドが何をしているのかについて常に配慮が居るということをご理解いただけるのではないかと思う

それがwaitで待っている状態かそうでないかを意味しているんだとしたらそれは正しくない。
チェックした次の瞬間にwaitする可能性もあるわけなんで。
2021/08/11(水) 01:24:38.33ID:qkzYmFIh
>>55
>チェックした次の瞬間にwaitする可能性もあるわけなんで。
無い
チェックと処置をmutexによる単一のロック期間の中でアトミックに行うのだから>>55は全くナンセンスな問題提起

>>53
thread::joinable()があることは書いたもーん
2021/08/11(水) 01:28:13.23ID:qkzYmFIh
問題だらけだった@IT様のサンプルコードだけど
これまともに実装するとしたら条件変数をConsumer x NとProducerの計N+1個設けて、
さらにConsumerそれぞれが待っているのか動いているのかを示すフラグを設けて
全部動いていたらProducerを待たせる
Consumerが待ちに入る直前にProducerにnotifyかけてキックする、みたいな
スレッドプールを手で実装するみたいな話になりそう……

でここまでやるならConsumerの状態変数が実体としてコードに現れる
2021/08/11(水) 01:44:51.77ID:01hIEDa4
何を主張したくてごちゃごちゃ言ってるのかさっぱり見えないし途中で変わったりしてるようでもあるので、
続けるならそもそもどういう主張をしているのかいっぺんまとめてほしい。
2021/08/11(水) 08:13:22.18ID:SyYdmIb8
>>56
std::threadから取得する「スレッドの実行状態」の話をしているんだが。
それをmutexでアトミックに操作する???
60デフォルトの名無しさん
垢版 |
2021/08/11(水) 09:56:36.95ID:8ERcfmko
C++ってiPhoneアプリ作れる?
2021/08/11(水) 12:11:01.26ID:sOdrsbt7
>>60
作れる。QtやUnityで。
2021/08/11(水) 12:13:04.52ID:sOdrsbt7
iPhone専用でいいなら、そもそも、Appleが提供している標準開発環境だけでも
C++で作れる。
iPhoneの標準開発言語はSwiftだが、SwiftはC++と相互に呼び出せるから。
ただし、それだけだと面倒かも知れない。
そういう場合は、Qtで作れば。
63デフォルトの名無しさん
垢版 |
2021/08/11(水) 12:52:41.17ID:MU7UJMps
std::vector で insert するとき
v.insert(v.begin() + n, hoge);
とかすると思いますが
このときの n の型って何ですか?
int ?
unsigned long ?
size_t ?
あとこういう型を調べるときって
vector のどことか iterator のどこを調べると判りますか?
2021/08/11(水) 13:03:37.14ID:19rzwYjH
22.3.11 Class Template vector
23.3.11.1 Overview
3
using iterator = implementation-defined; //see 22.2
となっていて、std::vector::iteratorの型は処理系定義だね

現物で調べるならVisual Studioの[F12]が簡単だと思う
2021/08/11(水) 14:01:06.77ID:OqxISI0I
>>59
ID:W7aMf5pX = ID:qkzYmFIh はスレッドの状態として
・その瞬間の状態: Run/Ready/Wait/...
・終了してるかどうか: thread::joinable で取得できる
を混同してる(わざとかどうかは知らんが)
あと条件変数とスレッドの状態も混同してるので
> チェックと処置をmutexによる単一のロック期間の中でアトミックに行うのだから
なんて意味不明なことを言い出してる
これ以上続けるなら>>58が言うように本人にまとめてもらわないとますますグダグダになるだけだと思う
2021/08/11(水) 14:15:21.29ID:EWMgwFeS
std::thread使ったことないから自信無くて黙ってたけど
thread::joinable()って別にスレッドが終了したかの判定ではなくない?
他スレッドでの実行を管理していない状態の(空の)オブジェクトが作れるから、そういう空の状態かどうかの判定関数であるように読めた
fstream::is_open()的な……
2021/08/11(水) 14:23:39.88ID:01hIEDa4
>>63
暗黙変換があるから n の型としてはすべての整数型があり得る。
基本的には、生ポインタで実装される可能性もあるものなので ptrdiff_t だと思っておけばいい。
正確な型が必要なら difference_type とか iter_difference_t とかで調べればわかる。
2021/08/11(水) 14:56:54.71ID:OqxISI0I
>>66
> thread::joinable()って別にスレッドが終了したかの判定ではなくない?
もちろん正確にはスレッド変数がスレッドと関連づいてるかどうかの判定
彼は>>35辺りでスレッド終了判定と思い込んでるフシが見られるのでそう書いてある
69デフォルトの名無しさん
垢版 |
2021/08/11(水) 15:08:15.20ID:MU7UJMps
>>67
ありがとうございます

>>64
>現物で調べるならVisual Studioの[F12]が簡単だと思う

それで判るのは自分で定義した可能性の高い n の型ですよね?
知りたいのは v.begin() + n に要求されている型のことです
2021/08/11(水) 15:28:09.46ID:EWMgwFeS
>>68
やっぱりそうですよね
じゃあ>>65の2個目の中黒の内容については引用??

例のコードではjoinableなんか使ってないし>>7が書いたのを試しもせずに真に受けた感じなのかな
2021/08/11(水) 15:29:37.31ID:EWMgwFeS
>>69
v.begin().operator+(n)とでも書き換えてoperator+で[F12]しろということではなかろうか
2021/08/11(水) 15:43:43.66ID:QcAq7ivU
>>69
ランダムアクセスイテレータには difference_type (またはそれに暗黙に型変換出来る何か) を足すことができて、
その結果の型はイテレータ自身と同じ。
https://timsong-cpp.github.io/cppwp/n3337/random.access.iterators
2021/08/11(水) 15:52:06.26ID:SyYdmIb8
>>66
>thread::joinable()って別にスレッドが終了したかの判定ではなくない?

実際にそのスレッドが実行中か待ちか終了しているかを表しているわけじゃないことはその通り。
で、たぶんそれで十分だからjoinable以上の機能は用意されなかった。

ところがそれが役に立つ場面があるよと言ったのが前スレ>>997
このスレの>>35と同一人物かどうかは知らんが。
2021/08/11(水) 15:54:21.05ID:19rzwYjH
>>71
そういうこと
75デフォルトの名無しさん
垢版 |
2021/08/13(金) 02:38:58.72ID:tLa9gek2
char *mystrcat(char *a, char *b)
{
// a に b を結合して
return a;
}
みたいな関数を
shared_ptr<char *> mystrcat(shared_ptr<char *> a, char *b)
{
// a に b を結合して
return a;
}
みたいな実装にするとき参照カウンタが無限に増える心配はありますか?
shared_ptr<char *> mystrcat(weak_ptr<char *> a, char *b)
の方が良いのでしょうか?
あと
hoge = mystrcat(NULL, hage); みたいに使用されるときは
mystrcat の中で new してコピーして new したポインタを返したいのですが問題ありませんか?
2021/08/13(金) 02:56:15.88ID:nopi39s7
>>75
shared_ptr<char *> だと、たぶんやりたいことはできてない。
shared_ptr<char[]> の間違いなんだろうと思うけど、この時点でコンパイルすら試してないのが見て取れる。
参照カウンタの動きは挙げられたソースだけじゃ読み取れないけど、無限に増えるなんてことはまず起こらない。
shared_ptr の use_count() で取れるから試してみればいい。
問題があるかどうかも自分で試してみればいい。何を「問題」とするかこちらにはわからないし。
2021/08/13(金) 09:51:25.31ID:BE9FMbqU
個別の事例で心配ない、問題ないという返答を得たとしても理解が深まらない。
shared_ptr のメカニズムを理解できないと何度でも心配になるだけ。

どういう理屈で参照カウンタが無限に増えると思ったのかを説明してみて。
考え方に間違いがあれば指摘するよ。
2021/08/13(金) 11:40:57.21ID:UG8FRdqC
char *mystrcat(char *a, char *b)
{
// a に b を結合して
return make_shared<char []>(a);
}
じゃいかんの
しらんけど
2021/08/13(金) 14:30:41.36ID:vEVo7A6C
適当な質問者と適当な回答者
ゴミとゴミをあわせてもゴミはゴミ
2021/08/13(金) 18:27:35.00ID:tLa9gek2
shared_ptr<char []> c(a);
return &c[0];
2021/08/14(土) 08:57:21.71ID:dlgzlAXX
namespaceってどのように使うものなんですか?
存在意義がわからない。
2021/08/14(土) 09:56:52.00ID:2Gpa2MRC
>>81
大規模ライブラリを設計するときに重宝する機能
詳しい経緯は知らないがグローバルスコープの識別子名の競合を回避する目的で導入されたと思う
namespaceがないC言語時代にいくつからの大規模ライブラリを組み合わせたときに何が起きがちだったか知っていれば納得出来るはず

どんな機能もそうだが、自分が必要と思った時に使えば良いだけだよ
存在意義が分からないならお前にとっては必要のない機能ということだから、気にする必要はない
2021/08/14(土) 10:45:32.18ID:MjnqNUAd
Cにnamespaceが導入されないのは何故なんです?
2021/08/14(土) 10:48:18.77ID:isR1pnnS
>>75
蛇足だけど、理由がなければshared_ptr<char[]>の代わりにshared_ptr<str>にしたほうがいいな。
// a に b を結合して
return a
がすごく怖い。
2021/08/14(土) 11:05:20.03ID:HmVXtcJk
>>83
namespace
2021/08/14(土) 11:07:32.50ID:HmVXtcJk
>>83
namespaceを導入するということは :: だのマングリングだのADLだの色々付いてくるからな
2021/08/14(土) 11:09:29.69ID:sh47n3w4
>>83
マングリングが必要になってしまうから、ってのが大きいだろうな。
88デフォルトの名無しさん
垢版 |
2021/08/14(土) 11:16:28.29ID:Wd8wuOU/
C++を本格的に学ぼうと思って本を数冊買ったが、言語仕様が複雑な割には知らないとエラー起こすだろ
っていう項目が多くてビビってる。あと、きれいなコードを書くのに尋常じゃない経験が必要なんじゃないか
2021/08/14(土) 11:34:44.96ID:xM4RG8+9
全部知らなくてもわかる部分だけでまあまあ使えるというのが C++ の方針なので
最初から綺麗に書こうと思わないほうがいいと思う。
綺麗に書けないと考えるより汚くても普通なんだと考えると気が楽でしょ。
2021/08/14(土) 11:41:20.52ID:HmVXtcJk
構造体の中に関数が書ける、というコアの中のコアな部分の使い方・考え方さえ憶えるというより慣れれば
あと他のは追加で憶えればいいってだけ

ただし、その追加が今とんでもない量になってて
禿本の初版からやってる俺でさえ憶えきれなくてもがいてる
2021/08/14(土) 11:47:19.11ID:fhp8ilcT
いいかい学生さん、 他人のコードをな、 他人のコードをいつでも読めるくらいになりなよ。
それが、人間えら過ぎもしない貧乏過ぎもしない、 ちょうどいいくらいってとこなんだ。
2021/08/14(土) 13:15:40.19ID:MjnqNUAd
>>88
エラーが起こったらまだマシだな
イクときはだまってイクからな
2021/08/14(土) 13:23:47.33ID:sh47n3w4
他人のコードを読んで学ぶのに一番向いてない言語だよなC++は。
2021/08/14(土) 13:48:08.91ID:fhp8ilcT
オーバーロードが悪いんですよ
2021/08/14(土) 14:19:07.48ID:EcmTnCEO
>>93
perl に比べたらまだマシ
2021/08/14(土) 17:38:14.88ID:sh47n3w4
perlは文法が複雑なだけで、知らない書き方に出会ったらそれを調べればいい。
C++はコードの断片だけ見ても動作を想像できないことがあるから厄介。
2021/08/14(土) 18:45:25.98ID:lbIZmRLc
ぶっちゃけスマートポインターって面倒だよね?
2021/08/14(土) 18:54:41.75ID:fhp8ilcT
スマポに限らず面倒なテンプレートクラスだらけだよ
2021/08/14(土) 18:56:25.80ID:fRH2bKcn
ぶっちゃけどんなときに面倒だと感じる?
2021/08/14(土) 19:58:29.67ID:x6Wgppy9
スマートポインタに慣れたら自分で解放しなきゃならないmallocやnewの方がよっぽど面倒
2021/08/14(土) 20:04:27.45ID:HmVXtcJk
>>98
クラステンプレートな
2021/08/14(土) 21:41:33.25ID:fhp8ilcT
autoが便利すぎて反復子の型を明示していたころのC++には戻れそうにない
2021/08/14(土) 22:18:40.56ID:cML6JT7R
11よりは前は書きたくないね
104デフォルトの名無しさん
垢版 |
2021/08/15(日) 00:20:00.85ID:YeWgyy60
QZ案外初心者やなw
でも言ってることは全面的に賛成
ポインタや参照、クラス等の基本を抑えてからでないとスマポや、C++11からの要素(右辺値参照含む)の使い方もわからんと思う
2021/08/15(日) 06:30:24.80ID:AkVzvB4L
autoもそうだが ->戻り型やusingエイリアスもだね
typedefには戻れない
2021/08/15(日) 09:34:41.47
>>103
確かに罰ゲームの一種になるかも‥‥私も少しずつ採り入れていくようになっていますし

>>104
もう永遠の初心者だと思っていますので、ならば、初心者の気持ちがわかるコメントでコントリビュートするのもありかと、ふつふつと
2021/08/15(日) 14:37:33.11ID:Qb5ISoeo
>>104
なにこれ?


QZ「〜」
名無し「QZ初心者やな。でも賛成」
っていう自演をやろうとしたが、一個目のQZのレスをコテつけ忘れで投稿してしまったのか?
あるいははちみつとQZを同一視している?
いずれにせよとんでもない皮肉だな笑
2021/08/15(日) 15:29:20.83
>>107
いちいち反応しなくてもよろしい

>>108
つ鏡
2021/08/15(日) 17:48:49.44ID:pJ9UilRh
>>107
それ、以前俺が書いたカキコを勝手にコピペされただけだよ
2021/08/15(日) 17:52:57.61ID:/OoKg6VD
クッソささやかな体面保つためだけの自演も失敗とか本当にみじめないきものだな…
2021/08/15(日) 18:00:11.34ID:/ZNLC/hj
これか。どういう意図のコピペなんだろうかね。
https://mevius.5ch.net/test/read.cgi/tech/1594615908/595
2021/08/15(日) 18:12:10.32ID:oR5NZ4bd
>>111
ブラウザが記憶してたのを再度投稿してしまったとかそういうしょうもないミスじゃないかな。
JaneStyle のメモ欄で以前のレス内容を貼り付けたりそのまま投稿できたりする機能があるよ。
2021/08/15(日) 18:15:56.65ID:pJ9UilRh
だから勝手にコピペされたっつってんだろクソ餃子め
>>104は俺じゃないから
3行目を引用したかったのか変な自演したかったのかは知らん
2021/08/15(日) 18:21:10.51ID:oR5NZ4bd
>>113
すまぬ。
本人によるものでなくてもなんらかの意図でメモしてたものを
うっかりということは起こりそうなデザインにはなっているので、
意図によるものでなくただのミスじゃねという部分が主旨。
2021/08/15(日) 18:25:05.27ID:pJ9UilRh
(´・ω・`)そうか
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況