[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 02/08 13:32 / Filesize : 255 KB / Number-of Response : 1019
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++相談室 part159



1 名前:デフォルトの名無しさん [2022/02/19(土) 11:56:42.14 ID:kSnJ/KwP.net]
前スレ
C++相談室 part158
https://mevius.5ch.net/test/read.cgi/tech/1636969758/

529 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 09:47:16.21 ID:sZ1wd+Ly.net]
和製言語つーとRubyとか?

530 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 10:01:22.67 ID:qWEoTKGw.net]
>>519
ジャッッッッッップwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

531 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 10:50:04.72 ID:sZ1wd+Ly.net]
>>518
タダ乗りか?
言語は使い手がいなきゃ消えていくだけだぞ

若害を指摘されてムカついたのかも知れんが
的外れな逆ギレは相手の主張を補強するだけだ

532 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 11:00:56.73 ID:UOk2lOR/.net]
>>518
日本に寄生しているチョン君に言われてもねぇ
日本人は色々と貢献しているけどチョン君ときたら自分さえ良ければだからな

533 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 11:26:21.48 ID:NlrnkDXA.net]
>>521
火病w

534 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 11:33:19.05 ID:FLjIdsXf.net]
さすがに極東板かマ板行け。

535 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 11:41:44.02 ID:w0SS0fac.net]
ネタにマジレスするのもあれだが、国民的アプリすらも実質韓国産という惨状なのに韓国をバカに出来る神経が本当に分からない
まぁそれこそアメリカ人とかであれば分かるが

536 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 11:52:37.30 ID:sCgw3/BF.net]
>>526
あれは日本人プログラマーをハンティングして作らせて完成した途端にクビにしたんだな
知らないとでも思ってんのかよ
さすがバ姦酷

537 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 11:58:06.63 ID:ken1LPi5.net]
>>527
体調わるいときはネット断ちして寝てた方がええよ
お前のお母さんみたいに無理して死んだら元も子もないよ



538 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 12:29:23.19 ID:eFhooB6a.net]
>>527
シナチョンジャップってお互いにお互いで起源主張マウントし合ってるよな
そしてお互いにお互いを起源主張と罵り合ってるのがほんま笑える

539 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 12:29:53.35 ID:fL7hhvH/.net]
>>529
祖国にお帰り

540 名前:デフォルトの名無しさん [2022/03/16(水) 15:21:21.65 ID:OMEE91WJ.net]
EclipseでGNU Autotoolsでビルドしたいんだけど、ワンクリックでファイル構成をパースしてMakefile.amを作ってくれるプラグインてないんかな?

541 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 16:43:46.25 ID:IF2KaGKL.net]
>>531
https://gammalab.net/blog/3rgve9rdw2kt5/

542 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 17:21:01.73 ID:dC1HWmI+.net]
defaultって単語が熱いなぁ

543 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 17:26:44.65 ID:sZ1wd+Ly.net]
ロシア国債?

544 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 17:43:54.03 ID:AUMfJKJU.net]
ルーブルをreturnするから問題ない

545 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 17:44:36.81 ID:dC1HWmI+.net]
C++11で正式採用されて11年経つというのに関数のdefault宣言を一度も使ったことがないわ

546 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 17:47:40.89 ID:lLYtmIck.net]
ええ…

547 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 17:49:13.58 ID:dC1HWmI+.net]
>>535
迷惑度でいうとreturnというより例外クラスをthrowする感じに近いですね



548 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 17:51:06.34 ID:sZ1wd+Ly.net]
>>536
= default; より
{} のほうが短いってこと?

549 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 17:54:01.36 ID:dC1HWmI+.net]
短いとは?

550 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 17:56:55.95 ID:sZ1wd+Ly.net]
ソースコードの文字数

551 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 19:05:34.58 ID:gvdy2Zu4.net]
bool oprator==(const ThisClass&)const = default;
は便利だぞ

552 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 19:32:49.28 ID:YdzJshEX.net]
{}の定義はtrivial判定にならないからなあ

553 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 20:15:30.86 ID:dC1HWmI+.net]
関数のdefault宣言を今まで一度も使ったこと人、正直に手を挙げなさい

554 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 20:54:55.18 ID:J1wyaesr.net]


555 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 22:03:43.15 ID:LiWeOEyq.net]
そもそもdefault宣言がわからない
何?

556 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 22:17:44.96 ID:jNwWVkZm.net]
struct C{
C();
C(const C&);
C(C&&);
C& operator=(const C&);
C& operator=(C&&);
~C();
// fields
int i;
std::string s;
};

class/structのうちコンストラクタとかの特殊関数を「何も考えずに実装したらこうなるよね」ってのを明示的に宣言する。

上のstructに初期化用の C(int, std::string); も追加するけど元のコンストラクタもそのまま使いたいときとか C()=default; を書いておく。

557 名前:デフォルトの名無しさん [2022/03/16(水) 22:32:26.86 ID:aL91bHGW.net]
じゃあ便乗して

>>547
&&の意味を教えてください
const &の代わりになるんですか?



558 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 22:40:15.82 ID:J1wyaesr.net]
>>547
あーなるほど
便利かもな

559 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 23:08:39.16 ID:jNwWVkZm.net]
>>548
T&&は右辺値参照
C++11で導入された「もう使わない値」を使いわますための仕組み

わかりやすい例だと
std::vector<int> mk10000(){
// 10000要素のvectorを適当に作って返す
}

struct C{
using ivec=std::vector<int>;
ivec _v;
C(const ivec&v): _v(v){}
C(ivec&&v): _v(std::move(v)){}
};

int main(){
C c(mk10000());
}

const T&のやつしかないと、vectorが持ってる10000要素を全部コピーするしかないが、
(その直後にもう使わないコピー元を破棄しなきゃいけない)
T&&のやつがあるとvectorが内部で持ってるポインタを差し替えるだけで済む。

560 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 23:19:48.63 ID:0TydPa2f.net]
それだけじゃ誤解しか生まないw
https://cpprefjp.github.io/lang/cpp11/rvalue_ref_and_move_semantics.html

561 名前:デフォルトの名無しさん mailto:sage [2022/03/16(水) 23:26:37.67 ID:Jym8C6W+.net]
昔はswap咬ましてたヤツだな

562 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 00:06:29.74 ID:duMzaOgi.net]
shared_ptr使えばいいじゃない

563 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 00:35:48.54 ID:Oo+Bui2i.net]
メモリポインタの差し替えか

564 名前:デフォルトの名無しさん [2022/03/17(木) 00:43:42.18 ID:DrTp92yO.net]
>>550
>>551
ありがとうございます

普通の変数
左辺値参照
右辺値参照
ポインタ
ポインタのポインタ
etc...

うーんC++は頭が痛くなりそうですね

565 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 01:50:00.57 ID:jsnVHM5N.net]
>>544
(´・ω・`)の

566 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 01:50:25.35 ID:faeKJv0z.net]
そんなことくらいで頭が痛くなるなら、むしろやめとけw

567 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 03:32:17.05 ID:kCjHZQsl.net]
昨今のコード書かない言語オタクのオナニー拡張はスルーしてよい。



568 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 13:38:21.60 ID:faeKJv0z.net]
そのまま動かない部分コードだけ書くバカを除いたら、大抵のスレは多分俺しかコード書いてないけどねw

569 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 13:52:55.92 ID:86Z8hvJ4.net]
ム板で「俺はコード書いてるぞ、どうだ偉いだろうエッヘン」
これ寒すぎるんだけど・・・

570 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 14:50:03.04 ID:zTqRydhk.net]
ム板だからこそコード書く奴は偉いと思うぞ
ただ実際に書いてる奴はいちいちそんなことを自慢気に書いたりしないけどなw

571 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 14:53:55.54 ID:86Z8hvJ4.net]
偉いのか? やっと一人前の板民というだけだろ
コード書かないやつがム板ではアウェーなだけで
そこから相対的に見て偉いと言うことにどんな意味があるんだ

572 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 15:07:05.49 ID:zTqRydhk.net]
>>562
> コード書かないやつがム板ではアウェーなだけで
お前は自分がアウェーという意識を持つべき

573 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 15:22:32.44 ID:86Z8hvJ4.net]
>>563
そこで喧嘩腰かよ

実際に書いてる奴はいちいちそんなことを自慢気に書いたりしないと言ったばかりの
舌の根も乾かぬうちにそれか

頭冷やせ、話はそれからだ

574 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 15:33:03.66 ID:faeKJv0z.net]
>>564
コラコラお前は煽るなw
俺は>>558に俺のことスルーできなくなっちゃうけどいいの?って言っただけだよ
やれマウントだやれドヤ顔だとか、ホームとかアウェーとか、その手の話しはじめちゃうやつはちょっと発想がやばいって
あと承認欲求なんていくら高くてもクソの役にも立たんぞw

575 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 15:37:19.10 ID:kCjHZQsl.net]
なにケンカしてるん? おまえら仲良くしろよな^^

576 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 15:39:26.58 ID:86Z8hvJ4.net]
>>565
何が? 俺煽ってないよ
唯一、批判めいたことを言ったのは560だけ

例えばだが562に青筋立てるようなら
俺はコード書きませんと自己申告しているようなものだぞ

577 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 16:00:27.96 ID:kKKT9czh.net]
>>562みたいなことを書く奴に喧嘩腰とか言われてもなぁw
ちょっと頭冷やした方が良くね?



578 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 16:03:43.13 ID:86Z8hvJ4.net]
>>568
あれ? 否定しないのか
だったら話にならないな

579 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 16:15:46.57 ID:0FIEYVVj.net]
何を否定してほしいんだろ…
相当頭に血が上ってそうw

580 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 16:58:36.33 ID:7ByY4YCs.net]
そんなことよりC++の話しようよ

581 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 21:12:52.60 ID:duMzaOgi.net]
日本のトレンド
ちんこ勝負
トレンドトピック: 正式決定

ツイッターの形態素解析エンジンやばくないですか

582 名前:デフォルトの名無しさん mailto:sage [2022/03/17(木) 21:16:07.60 ID:VOoj+XQs.net]
OSSの拾いもん回してるだけだろ

583 名前:デフォルトの名無しさん [2022/03/19(土) 19:36:28.58 ID:0pH7TqjX.net]
std::vector::atの定義がこうなってるんですけど

reference at(size_type n);
const_reference at(size_type n) const;

これはエラーにならないんですか?
戻り値の型だけが違う場合オーバーロードはできないと勉強したんですけど

584 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 19:45:40.38 ID:jBXtN76z.net]
戻り型だけの違いやないやん
thisの違いは仮引数の違いやで

585 名前:デフォルトの名無しさん [2022/03/19(土) 19:48:56.32 ID:0pH7TqjX.net]
あ、なるほど
ありがとうございます!

あと2つが呼ばれるときの違いもわからないのでそちらも教えていただきたいです

586 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 20:15:27.83 ID:Cc07y5v9.net]
少なくともconstオブジェクトからはconstメンバ関数しか呼べないね

587 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 20:28:47.85 ID:Cc07y5v9.net]
www7b.biglobe.ne.jp/~robe/cpphtml/html02/cpp02024.html

と思ったら非constオブジェクトはキチンとconstじゃない方を呼ぶんだね



588 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 20:29:14.00 ID:hj0ig94x.net]
const Tからはconstメンバ関数しか呼べない

Tからはconstじゃない方を優先的に呼ぶ
constメンバ関数しかなかったらconstメンバ関数を呼ぶ

589 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 20:30:44.79 ID:hj0ig94x.net]
わかりやすいのはvector::size()const;

constから使えるし、constじゃなくても普通に使える

590 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 20:31:32.90 ID:HgLoiHN9.net]
constあるなしでオーバーロードできるんですか?

591 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 20:36:43.47 ID:hj0ig94x.net]
>>581
できる

件のvector::at(size_t) もそうだし、operator[](size_t)もそう

vector<int>{0};
const vector<int>cv{0};

v[0]=1; // int& operator[](size_t);
cv[0]=1; // const int& operator[](size_t)const; こっちがコンパイル通ったらまずいよね

592 名前:デフォルトの名無しさん [2022/03/19(土) 21:07:20.86 ID:0pH7TqjX.net]
皆さんありがとうございます
ちょっと自分で整理してみたんですけどこれで合ってますか?

☆普通の関数の場合
•引数のconstの有無だけのオーバーロード→コンパイルエラー
int A(int x);
double A(const int x);//エラー

•constなし引数への代入→const有無どちらも可
int A(int x);
int i=0;
const int c=0;
A(i);A(c);

•const引数への代入 → const有無どちらも可
int A(const int x);
A(i);A(c);

593 名前:デフォルトの名無しさん [2022/03/19(土) 21:08:09.65 ID:0pH7TqjX.net]
☆メンバー関数の場合
•thisに対するconstの有無だけのオーバーロード → OK
class B{
public:
 int C(){return 0;}
 int C() const{return 1;}
};

•const無メソッドだけあるとき→const変数からは呼べない
class B{
public:
 int C(){return 0;}
};

B b1;
const b2=b1;

b1.C();
b2.C();//エラー

594 名前:デフォルトの名無しさん [2022/03/19(土) 21:08:27.42 ID:0pH7TqjX.net]
•const有メソッドだけあるとき →const有無変数どちらからも呼べる

class B{
public:
 int C()const {return 1;}
};

b1.C();
b2.C();

•両方あるとき→変数のconstの有無に対応したものが呼ばれる

class B{
public:
 int C(){return 0;}
 int C()const {return 1;}
};

b1.C();//0
b2.C();//1

595 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 21:41:36.92 ID:DslNhsx1.net]
最近静かだったので見てなかったら、めっさ自演されてるw

596 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 21:43:30.89 ID:DslNhsx1.net]
const云々とか流石にやばすぎなので、↓へw

0からの、超初心者C++相談室
https://mevius.5ch.net/test/read.cgi/tech/1542002113/

597 名前:デフォルトの名無しさん [2022/03/19(土) 21:50:03.17 ID:0pH7TqjX.net]
😢
ありがとうございます
スレ汚し失礼しました



598 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 21:51:54.61 ID:JACgrnJr.net]
volatileメンバ関数の話もしないと片手落ちだぞ

599 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 22:02:55.92 ID:hj0ig94x.net]
>>588
その認識で合ってる

volatileもconstも伝染する性質が同じだけだからconstだけ覚えておけば問題ない

586はプログラム板で意味もなくマウント取るだけおじさんなので無視していい

600 名前:デフォルトの名無しさん mailto:sage [2022/03/19(土) 22:17:28.58 ID:DslNhsx1.net]
マウント取りたいだけ、認められたいだけなのはお前w
自作自演のconst劇再演して面白い?w

601 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 01:21:01.58 ID:lIF6fzsd.net]
>>558を見てオモタが、
規格委員会が新しい言語要素を仕様化する際に、必ずコンパイラに実装してみて
実現可能性やよからぬ弊害が無いことや仕様に意図せぬあいまいさが無いことを実証するフェーズが入ると思うんだけど
その手の実装ってどこがやってるの?コンパイラメーカーに規格書のプレプリントを渡して丸投げ??

602 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 01:23:47.24 ID:lIF6fzsd.net]
もし規格委員会自身がやっているんなら神の実装技術を持った集団が規格委員会に居るはずで、>>558の言い様は正しくないかもしんないが、
万が一プロプラエタリーなコンパイラメーカーに丸投げなら参入障壁を高めるために複雑怪奇な仕様をあえて無理矢理引き受けるケースもあるかもしんない
かもしんない運転、

603 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 01:35:55.70 ID:1+CNf8az.net]
お前がそんな風に何も調べもせずに妄想だけで他人に聞いちゃう読んで字のごとくの「丸投げ」と一緒にしちゃダメだろwwww

604 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 01:37:12.20 ID:1+CNf8az.net]
調べればすぐ出てくるけど、
https://isocpp.org/
で聞けw

605 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 01:45:20.01 ID:lIF6fzsd.net]
いやすまん確かに
>(規格委員会が)実現可能性やよからぬ弊害が無いことや仕様に意図せぬあいまいさが無いことを実証する
というのは妄想やったわ;;;

606 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 01:48:15.78 ID:1+CNf8az.net]
何か裏を取れる事実がないなら全て妄想なんだよw お馬鹿さんw

607 名前:デフォルトの名無しさん [2022/03/20(日) 16:56:04.20 ID:XASZAdc/.net]
すいません教えていただけないでしょうか

棒読みちゃんっていうフリーソフトが一向に更新されないので
真似て作りたいのですがどのようなプログラム言語を学んだらよろしいですか?



608 名前:デフォルトの名無しさん [2022/03/20(日) 17:07:50.89 ID:XF1vAqW3.net]
参考書を一冊読み終わった程度のガチガチの初心者です。
初めて何か簡単なものを作ろうと思ったのですが、ウィンドウのサイズの指定の仕方が良くわかりませんでした。
VisualStudio2022でテンプレートはユニバーサルWindows-C++/Cxです。
そもそも質問する場所はここであってますでしょうか?

609 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 17:14:15.90 ID:n/9ce90/.net]
以下スレのほうが質問するのにあってると思うます

Win32API質問箱 Build127
https://mevius.5ch.net/test/read.cgi/tech/1639053176/

610 名前:デフォルトの名無しさん [2022/03/20(日) 18:05:54.67 ID:XF1vAqW3.net]
>>600
すみませんありがとうございます。

611 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 19:52:39.86 ID:kJ/tleYc.net]
なぜガチガチの初心者がなぜC++/CXいってまうんや。

昔はまだしも、C++17とCX両方襲いかかってくるから
理解するの大変な上、理解しても先が難しいと思うが。

普通にc#+やむなしなトコだけC寄りのC++でいいと思うが。

612 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 20:32:45.31 ID:EuUP+kdP.net]
>>598
テキスト文字列を合成音声で読ませるってことならスピーキングライブラリに頼りきることになるだろうしPythonとかでお手軽にできるんじゃない
ライブラリに頼る場合はPythonとかJavaとかC#らへんが適正だと思う
自分も少し前にC#でそういうの作った事あるけどWindowsならSystem.Speech.dll参照して簡単に喋らせられたな

613 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 23:15:40.56 ID:1+CNf8az.net]
別に喋らせるんならC++でもpythonでもC#でも出来るけど、Javaは難しい(面倒)だろうねwwwww

614 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 23:38:16.04 ID:UJahVNmy.net]
パピコンでも喋るのに

615 名前:デフォルトの名無しさん mailto:sage [2022/03/20(日) 23:46:10.52 ID:1+CNf8az.net]
流石にそのレベルの音声合成と一緒にしたら可哀想w
PCM音源がなかったので、FM音源でしゃべらせたり、beep音で音楽(単音・音量調整なし)鳴らしたり効果音出したりが当時の流儀w

616 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 01:56:07.23 ID:TlR/Mg8q.net]
ゲームアーツのソフトがFM音源でよく喋ってたわ

617 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 13:45:57.08 ID:sqIPbQd/.net]
C# - C++/CX - ネイティブC++
というふうに間に挟めば時としてマーシャリング規則がメドイP/Invokeからおさらばできる……!
ような気がする……!!



618 名前:デフォルトの名無しさん [2022/03/21(月) 13:48:08.86 ID:ROKj/vns.net]
どうも599です。
買った参考書の終わりの方にUWPでなんか作ろうって書いてあったのと、スマートポインタってなんかいいなって思って、そんでC++/CXかなって思いました。
そもそも言語の選び方もなんか間違ってたっぽいんですけど、なんか、
最速っていう響きに寄せられてなんか、c++すごそう・・・、っておもって続けてます。簡単なものでもなんでもいいからなんか作りなと知人に言われたので、とりあえず簡単なタイマー作ることにしました。

619 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 13:55:13.39 ID:2Z4azz5I.net]
>>608
そこはC++/CXじゃなくてC++/CLI。というかまさにそのために作られたのがC++/CLI

620 名前:デフォルトの名無しさん [2022/03/21(月) 14:01:07.93 ID:ROKj/vns.net]
今やっと昨日の質問の答えを見てきたんですけど、UWPやるのはやめといたほうがいいらしいですね。
VisualStudioでタイマー作ろうと思ったんですけどおすすめのテンプレートありますか?

621 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 14:05:11.38 ID:sqIPbQd/.net]
>>610
えっ

622 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 14:21:34.68 ID:j56ex+kV.net]
C++/CLIでコンパイルされたDLLはC#で書いたDLLと同じように利用できる
C++/CXは知らん

public ref class C{
public:
property System::String^ S1{
System::String^ get(){return _S1;}
void set(System::String^value){_S1=value;}
private:
System::String^ _S1;
}
};

class C{
string S1{get;set;}
}

623 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 14:23:46.00 ID:TlR/Mg8q.net]
cliはc#と変わらんからなあ
間に挟む意味はないよ

624 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 14:57:53.89 ID:HCPaDxP+.net]
delphiとc++が合体したような言語よの

625 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 18:13:19.47 ID:BAdp3agq.net]
嘘つくな・・・あと

626 名前:UWPならその名のついたスレに行け
C++/CLIはマネージドコードを混ぜられるネイティブコードってだけで、C++の大規模な「MS独自拡張」
これを更に拡張してUWP要素を載せたのがCX
C++じゃないんで、独自スレでも立てて一人で盛り上げてくださいw
個人的にはUWP自体がオワコンなので、せめてC#でやればいいのにとしか思えないがやるのは君の自由だw
[]
[ここ壊れてます]

627 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 18:22:20.19 ID:OLHk6lmK.net]
>>616
マネージド拡張と勘違いしてるんでは?



628 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 18:28:56.05 ID:BAdp3agq.net]
https://docs.microsoft.com/ja-jp/cpp/extensions/component-extensions-for-runtime-platforms?view=msvc-170

629 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 18:32:58.53 ID:Prmlj1K5.net]
今はC++もクロスプラットフォームに対応する時代ですよ
いきなりWindowsべったりの書き方を覚えるより簡単なコンソールアプリとかQtから始めるのをお勧めしておきます

630 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 18:37:45.51 ID:BAdp3agq.net]
どうせいつものVC++使うconstの話ばかりするおじさんの自演w

631 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 18:46:38.57 ID:2xjgwrAK.net]
MSの独自拡張ガーとか言われてもC++を世界に普及させたのはMSですからね。

632 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 18:55:58.33 ID:TEVzcoXo.net]
MFCのことかね?

633 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 19:30:28.04 ID:RS8xXzlz.net]
ユニコードのことか〜

634 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 19:33:36.97 ID:zSyDDKWU.net]
utf16 なんか消えて、utf32 と uft8 だけになればいいのに…

635 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 20:04:10.64 ID:HCPaDxP+.net]
J#が一番ワケワカランかった

636 名前:デフォルトの名無しさん mailto:sage [2022/03/21(月) 22:37:44.93 ID:dYQgVp3+.net]
ちんちんシュッ!シュッ!シュッ!

637 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 08:04:59.19 ID:jyd+b1no.net]
なんでqmlって機能があるQtよりelectronが普及したのか



638 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 08:19:14.63 ID:4wXemx3i.net]
>>627
Qtはライセンスが面倒じゃない?
特にwindowsはよくわからん。

639 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 10:17:12.52 ID:e045zQYf.net]
>>619
プラットフォームをWindowsからQtに乗り換えるだけじゃ同じことじゃん
アプリから見てAPIでしかないんだから

640 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 10:31:07.58 ID:OaCGWLhd.net]
泥舟に乗り換えろと言われてもな。

641 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 10:46:04.30 ID:mouTiTR6.net]
共通プラットフォーム使うのは全然マシだと思いますよ

642 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 10:51:02.79 ID:OaCGWLhd.net]
Javaの失敗から何も学ばないのは馬鹿というものだ。

643 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 10:53:19.42 ID:mouTiTR6.net]
C++の失敗とかここで言われても

644 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 12:08:25.57 ID:7HP7s9m4.net]
じゃ鉄舟にのりかえるわ

645 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 12:48:01.28 ID:BLG0uiz2.net]
Win32で書いたソースコードそのままでスマホで動かせるんか?

646 名前:蟻人間 mailto:sage [2022/03/22(火) 12:59:12.46 ID:BjxSmr6W.net]
>>635
最近はARMで動くWindowsもあるよ。

647 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 13:03:45.42 ID:e045zQYf.net]
こういう質問、Windowsとスマホの用途の違いという根本を蒸ししているパターン多いよな
前提になっているパーツや環境だって違うのに「自分は移植作業したくない」

じゃあPGやめたらって話



648 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 13:04:16.00 ID:e045zQYf.net]
s/蒸し/無視/g

649 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 13:04:33.14 ID:njeYgDdQ.net]
>>636
MS も Windows phone から撤退したじゃん

650 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 13:31:47.44 ID:1zUmccnl.net]
Win32は「Windows」という環境依存定期

651 名前:デフォルトの名無しさん mailto:sage [2022/03/22(火) 13:37:00.07 ID:OaCGWLhd.net]
処理系依存していいのかC/C++の最大のメリットだし。

652 名前:デフォルトの名無しさん mailto:sage [2022/03/23(水) 11:56:26.96 ID:I3LWr1Un.net]
変なのキタ
https://ossia.io/posts/minimum-viable/

653 名前:デフォルトの名無しさん [2022/03/23(水) 13:08:39.58 ID:AtA1Snji.net]
>>642
構造体を入れ子にしてGUIノードツリーを表現するの面白いね
最近はXAML/FXML/HTMLなどXML派生言語でGUI構造を表現するものが多いけど、言語固有の構造体で表現するほうがパース・オーバーヘッドがなくていいのかな

まだ、ボタン押下時のコールバック(ハンドラー)など不明点が多い

654 名前:デフォルトの名無しさん [2022/03/23(水) 14:11:26.99 ID:MxMb2yoX.net]
```
void fuga() {}

auto hoge = fuga;

int main() {
std::cout << GetFuncName(hoge) << std::endl;
}
```

こんな感じのコードを書いたときに文字列で"fuga"を返してくれるようなGetFuncNameの実装方法ってありますか?
はじめは
#define GetFuncName(var) #var
とマクロを定義すれば良いかと思ったのですがこの定義でGetFuncName(hoge)とすると"hoge"が返ってきてしまいます...

655 名前:デフォルトの名無しさん mailto:sage [2022/03/23(水) 14:25:09.91 ID:KVWBweE9.net]
実行時に動的に取るためにはどっかで入れてあげないと駄目ですなー

656 名前:デフォルトの名無しさん mailto:sage [2022/03/23(水) 16:45:23.47 ID:U3MPlBH2.net]
ある比較関数
f = [](int l, int r){return l > r;};
があったとして、priority_queue<int> に f を渡したときと vector<int> を f で sort したときに両者の順番が異なるの非自明過ぎるのだが

なんで priority_queue の方はこれで昇順になるの?

657 名前:デフォルトの名無しさん mailto:sage [2022/03/23(水) 16:49:02.84 ID:nUwfSeaH.net]
extern C declspec dlldxport 付けて、
実行時に自分自身をサーチすれば、付けた関数については
文字が残るから可能だけど、やるかと言われたら
まあ最悪一歩手前の方法やな...



658 名前:デフォルトの名無しさん mailto:sage [2022/03/23(水) 17:47:41.73 ID:Rq928qXu.net]
enumの名前ほしがったり関数名ほしがったり
最初からC#使えばいいんですよ。

659 名前:デフォルトの名無しさん mailto:sage [2022/03/23(水) 18:52:01.34 ID:wWGNqGIP.net]
C++erは速度厨なので名前を実行時解決するC#のリフレクションはあり得ない

C++23に入るかもしれない静的リフレクションを待ちましょう
https://cppmap.github.io/standardization/cppx/#_3

660 名前:デフォルトの名無しさん mailto:sage [2022/03/23(水) 18:58:48.40 ID:nUwfSeaH.net]
静的リフレクションとか意味うっすw
リフレクション欲しいのは大抵自分自身が定義するものではないのに。

661 名前:デフォルトの名無しさん mailto:sage [2022/03/23(水) 19:02:11.91 ID:4wwS6ZaC.net]
用途に応じてベターな手段を選ぶことができるとこまで整備されると
いいね

662 名前:デフォルトの名無しさん mailto:sage [2022/03/23(水) 19:30:22.64 ID:Rq928qXu.net]
よくねーな。C++はとことん薄っぺらであるべき。

663 名前:デフォルトの名無しさん [2022/03/23(水) 19:48:39.65 ID:BZjVj5dO.net]
>>646
template <class T,
class Container = std::vector<T>,
class Compare = less<typename Container::value_type>>
class priority_queue

デフォルトはlessで<を定義して、降順にするのが元の意味

fで<の意味をひっくり返せば、昇順になる

664 名前:デフォルトの名無しさん mailto:sage [2022/03/23(水) 20:10:07.72 ID:8yKlU7lo.net]
つーかリフレクションてコンパイル時に決定できない事を扱うから意味あるのに
性的に解決できることはリフレクションとしては意味がない

665 名前:デフォルトの名無しさん mailto:sage [2022/03/23(水) 20:35:05.43 ID:FjwJYdtM.net]
>>649
速度厨? なにバカ言ってんだ
ハードソフトまで含めた全てのトータルバランスを追求するんだよ

そうじゃないおまえの眼がこの世界を正しく写

666 名前:せないだけだ []
[ここ壊れてます]

667 名前:デフォルトの名無しさん mailto:sage [2022/03/23(水) 20:52:55.01 ID:k8Z8CHR2.net]
またマクロ/const/リフレクション/windowsおじさんが自演で暴れてるw
マクロ→廃止すべき
const→常識なので話題に挙げないべき
リフレクション→静的/手動なべき(というか動的にリンクされない限り、C++では不要)
windows→滅びるべき
なのでおじさん不要w



668 名前:デフォルトの名無しさん mailto:sage [2022/03/23(水) 21:42:30.64 ID:Rq928qXu.net]
ATL使ってCOMで実装しなさい。

669 名前:デフォルトの名無しさん mailto:sage [2022/03/23(水) 21:47:56.30 ID:nUwfSeaH.net]
COMとかWin用に大型アプリ提供してる会社しか
継続してないんじゃないか。
C#のCOMは簡単だし妙な記述皆無だから
まだ使ってる人居そうだが。

670 名前:デフォルトの名無しさん mailto:sage [2022/03/23(水) 22:19:07.27 ID:k8Z8CHR2.net]
COM/DCOMの技術は良かったし、MSはときどきいい技術を作るんだけど、元の信用度が足りなくて普及しなくて失敗するw
COMやC++/CLI以降の話は正確にはC++じゃないので別スレでも作ってやれw

671 名前:デフォルトの名無しさん mailto:sage [2022/03/23(水) 22:26:18.54 ID:Rq928qXu.net]
MSの信用が足りないとかCOMが普及しなくて失敗したとか釣り針でかすぎ。
井の中の蛙というか下水道のゴキブリ。社会に出たことがないのだろう。

672 名前:デフォルトの名無しさん mailto:sage [2022/03/23(水) 23:17:30.63 ID:k8Z8CHR2.net]
釣りじゃねーよw
当時OMGのCORBA、JavaのRMI、MSのDCOMとかあったけど、全部潰れてSOAP一択になったろw
今じゃそれも廃れてRESTだけ残ってるw 井の中の蛙はお前w

673 名前:デフォルトの名無しさん mailto:sage [2022/03/23(水) 23:26:20.36 ID:e3uFLGnE.net]
DCOMその他とCOMを同列に扱うな

674 名前:デフォルトの名無しさん mailto:sage [2022/03/23(水) 23:37:17.78 ID:k8Z8CHR2.net]
ただのCOMなんて・・・w ActiveXと一部のコントロールで使われただけだろw 一言で言えばゴミw

675 名前:デフォルトの名無しさん mailto:sage [2022/03/23(水) 23:48:22.86 ID:Rq928qXu.net]
釣りかと思ったらこいつガチの引きこもりやんw

676 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 00:06:11.51 ID:1Vr2GJ3G.net]
自己紹介乙w
ATLほんとに使ったことあんのか?w
俺はWin3.1のMFC/OLE時代からWindowsどっぷりで作りまくってたぞ
Java/.NET以降はWindowsあんまり触らなくなったけどなw

677 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 00:19:47.29 ID:JVs5nwp2.net]
今でもWindowsはcomの塊。IE、DirectX、Office全部comやで。
一太郎にExcelの表貼れるのも、vbscript、perlからExcel呼べるのも全部comのおかげ。
専ブラが一日で作れるのもcomのおかげ。

規格だけで実装では禄にオブジェクト間通信できなかったCORBAを
COMの対抗馬として本気で持ち出すあたりが無知で笑える。圧倒的MSの勝利。



678 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 01:01:10.28 ID:1Vr2GJ3G.net]
そりゃWindowsはOLE時代から使ってるから当たり前だろw
むしろ他で使われてなければ負けなんだよw

679 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 01:08:56.24 ID:1Vr2GJ3G.net]
あと普通にCORBAは結構実装されてんぞ
COMが他のプラットフォームで使われてんの見たことないし、MS以外のCOMもWindowsプラットフォームでも結構レアw
専ブラなんて今どき何で作るのか知らんが、普通ならElectronで書くだろうし、COMってIEコンポーネントで作るのか???w
バカも休み休み言えw

680 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 01:38:18.08 ID:y95b8UUh.net]
Electronだと外からの操作大変だしアプリへの組み込み難しくなるから(electronの中で戦う苦しい状態に)
普通はWebView2もってくんじゃないかな。
どんな独自アプリでもサクッと組み込めるっしょ。

681 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 02:15:16.69 ID:1Vr2GJ3G.net]
ないないw Electron超簡単だよw JS書けるだけでいいし、すごい面倒くさいよw 二重管理だからw
WebView2なんてほとんど使ってるやついないだろうし、何でも外からやらないといけないからすごい大変そうw
Webの画面を表示したいのでなければ俺なら絶対に使わないw

682 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 02:38:00.53 ID:+RGleBjy.net]
今はElectronより高速なTauriだな

683 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 02:39:48.55 ID:1Vr2GJ3G.net]
TauriとかWebView2よりないw

684 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 03:31:57.74 ID:DeDdmrpu.net]
Tauri>>>Electronで大方の勝負ついた感じだな

685 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 04:02:03.79 ID:y95b8UUh.net]
Electronて既存で出来上がってるアプリの一部、
一つのタブ内やパネル内に手軽に組み込めるの?

686 名前:はちみつ餃子 mailto:sage [2022/03/24(木) 04:16:18.85 ID:3pj9A089.net]
WinRT は COM がベースだよ。
C++ から利用するなら旧来の API より使いやすいんだが、
WinRT もそれほど積極的に活用されてる感じはしないな。

687 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 04:28:29.36 ID:1Vr2GJ3G.net]
そこに気付くとはw
C++のままだからな
.NETにすると自動的に変換可能なCOMになるっていうw



688 名前:はちみつ餃子 mailto:sage [2022/03/24(木) 04:39:56.11 ID:3pj9A089.net]


689 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 05:46:41.46 ID:1Vr2GJ3G.net]
.NETのアセンブリは元々publicなら設定によりCOM参照可能に出来る
https://docs.microsoft.com/ja-jp/dotnet/framework/interop/exposing-dotnet-components-to-com
WinRTは言語的な拡張なしに=C++のままで.NET(だけじゃないけどw)とinteractionするので、
https://en.wikipedia.org/wiki/C%2B%2B/WinRT
必然的にCOMになるよねって言っただけw

690 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 07:07:41.33 ID:JVs5nwp2.net]
> むしろ他で使われてなければ負けなんだよw

圧倒的シェアのWindowsではなく
ニッチ市場で使われないと負けという謎のオレオレルールw

691 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 07:22:11.34 ID:s6VdVAhb.net]
イキッてるくせにCOMがそもそも何のためにあるのかがわかってないやつが散見されるな

692 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 07:44:02.07 ID:1Vr2GJ3G.net]
そもそも論ならWindowsのコントロール間でデータを授受するための仕組みであるOLEの成れの果てだぞw
ただ最終的に目指していたのはDCOMで、プラットフォーム非依存、DLLヘルからの脱却/GUID(UUID)での識別/バージョン管理などのローカル諸問題解決を含む、RPCだよw
.NET以降は表立って出て来ない形になり、Windowsでカスタムコントロールを作ったりしない限り、言葉としてもほぼほぼ失われたものだと思ってるw

693 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 07:47:15.28 ID:JVs5nwp2.net]
> COMが他のプラットフォームで使われてんの見たことない

つ OpenVMS

694 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 07:55:15.79 ID:1Vr2GJ3G.net]
VAXは流石に名前しか知らんw マニアックすぎるだろw
Openになってからも興味ないし、Alphaチップマシンは使ったことあるけど、普通にWindows動いてたよw

695 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 08:11:46.86 ID:s6VdVAhb.net]
APIの提供形態ってだけ

APIで発行された要求を処理している何者かがどこにあろうがそういう問題じゃないし
他の類似するものと比べるのもナンセンス
VirualAllocとGETMAINを比べるような不毛な話だ

696 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 08:34:27.56 ID:1Vr2GJ3G.net]
そこでIBMとか・・・時代遅れにもほどがあるでしょ
なんでそんなどんどん話を逸していくの?
俺はDCOM的意味合いでしかCOMという用語を使ってないし、文脈的にはプラットフォーム非依存な話だと思ってたんだがw

697 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 09:33:43.04 ID:JVs5nwp2.net]
C++はオブジェクト思考言語で、COMやCORBAはオブジェクト間通信の技術で、
ネットワーク越し、異処理系間通信もできるからといってそれのみと限定するほうが謎。
しかもコケたCORBAはともかくCOMが普及せず失敗したとかMS-OfficeやWindowsは普及してないと言ってるようなもの。
OLEの成れの果てと言うが木を見て森を見ずというか、むしろ草を見て地球を見ずレベル。



698 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 13:52:17.42 ID:TSqeyWkd.net]
氷河期世代特有のMSアンチおっさんは放置しておけ

699 名前:デフォルトの名無しさん mailto:age [2022/03/24(木) 16:22:26.20 ID:M4wmYApX.net]
template引数によって関数の定義有無を変えたいのですが、そのようなことは可能でしょうか?

template<typename T>
class Test
{
public :

  FuncA(){ ・・・ }

  FuncB(){ ・・・ } ←Tがfloat型以外のときに定義するようにしたい
}

700 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 16:50:06.09 ID:6Nkoi7KJ.net]
>>687
Linuxとかに手を出して、ちょっとPCに詳しくなった気になってMSアンチになるやつはどの世代にもいるから安心しろw

701 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 17:02:11.79 ID:RVLAMmSf.net]
>>688
C++20の<concept>使えるなら

void FuncB()requires(!std::same_as<T,float>){...}

702 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 17:11:46.20 ID:s6VdVAhb.net]
conceptは要するにSFINAEだから
C++17ならこういけばいい

auto FuncB() -> std::enable_if_t<!std::is_same_v<T, float>, void> {}

703 名前:688 mailto:sage [2022/03/24(木) 17:32:02.64 ID:M4wmYApX.net]
>>690-691
最近のC++ではそんなことが可能なんですね・・・!!
ありがとうございました!!

704 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 17:57:10.73 ID:OAaMfHu2.net]
あとは特化テンプレートとか

705 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 18:00:33.75 ID:s6VdVAhb.net]
最近のっつーかenable_ifはC++11から使えるぞ

706 名前:688 mailto:sage [2022/03/24(木) 18:09:06.73 ID:M4wmYApX.net]
>>693-694
ありがとうございます!

707 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 18:09:14.56 ID:RVLAMmSf.net]
>>691
そのSFINAEはまずい
class Test<float>が実体化された時点でfuncBが実体化される
(funcBはtemplateではない)

実体化した時点でfuncBの返り値型がtemplate依存のenable_ifではなくなるためコンパイルエラーになる



708 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 19:35:07.28 ID:1Vr2GJ3G.net]
MSアンチはどの世代でも世界的に多いし、WindowsありきのOLEのような技術だけを指してCOMと言ってたら、Windowsの普及=MS Officeの普及=COMの普及になってしまうからなw
C++=OOP言語=RPCはCOM/CORBAというのは普通に自然w
Windowsだけで普及を語るのは正に草を見て地球を見ずレベルw
OSSなモノだと逆にWindowsだけ動かないという現象も日常茶飯事w それくらい嫌われているw

また部分だけで動かない例挙げて、メチャクチャになってるなw
ちゃんと動く例を挙げて、条件を明確にしとけw
_tとか_vとかもあれだしw
Windows坊やたちはこれだから・・・w

// C++11〜
#include <type_traits>
template<typename T> auto FuncB() -> typename std::enable_if<!std::is_same<T, float>::value, void>::type {}
int main() {
// FuncB(); // error: no matching function for call to ‘FuncB()’
// FuncB<float>(); // error: no matching function for call to ‘FuncB()’
FuncB<int>();
return 0;
}

709 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 22:24:41.52 ID:eqpcVqC2.net]
MSアンチというよりもMSの囲い込みが強引すぎて、他の環境を知ってしまうとMSから離れたくなるだけでは?

710 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 22:30:06.36 ID:bdM8JANZ.net]
どうしてもC++17以前でSFINAEでやんなきゃいけないなら無理矢理template依存にするしかない

ようこそ黒魔術の世界へ...

#include<type_traits>

template<class T>
class Test{
public:
template<int...dummy, typename std::enable_if<sizeof...(dummy)==sizeof...(dummy)&&!std::is_same<T,float>::value, int>::type = 0>
void funcB(){}
};
int main(){
Test<int> t1;
Test<float> t2;
t1.funcB();
//t2.funcB();
}

711 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 23:04:17.88 ID:MDLggK/J.net]
MSよりマックの囲い込みのほうが鼻につくと思うのは自分だけだろうか

712 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 23:13:46.53 ID:1Vr2GJ3G.net]
apple>>>MS>>>

713 名前:>>それ以外って感じの強さw []
[ここ壊れてます]

714 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 23:16:10.29 ID:y95b8UUh.net]
囲い込みの点ではハードから開発環境からストアに至るまでアップルは異常な囲い込み。
社外に対しては会社も各社員も殆ど貢献しねぇし。
アップルのためだけに請け負い会社潰しながら株価あげるため活動しとる。

715 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 23:27:03.23 ID:k3BsWDgY.net]
MSの囲い込みとか言ってるのは爺だけだろ
OSSにどんだけ貢献してると思ってるんだよ

716 名前:デフォルトの名無しさん mailto:sage [2022/03/24(木) 23:44:46.04 ID:1Vr2GJ3G.net]
いやいやなんかWeb系のTypeScriptとかvscodeとかazureとかそういうのはいいんだよw
問題はWindows本体w
まともに動かないレベルのハードに未対応というのは分かるけど、どう見ても性能的に問題ないハードを対象外にしちゃうWindows11はどう考えてもやり過ぎw

717 名前:デフォルトの名無しさん [2022/03/24(木) 23:45:11.78 ID:rNy1eSrz.net]
悪のゲイシ帝国。



718 名前:デフォルトの名無しさん [2022/03/24(木) 23:46:28.20 ID:rNy1eSrz.net]
UEFIとチンポ2.0はセキュリティでは?

719 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 00:01:19.19 ID:m/iwpp86.net]
>>703
VSCodeが囲い込みツールだもん、使えねぇって

720 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 01:09:44.76 ID:XVe+E9v/.net]
Mac は、Homebrew, Fastlane とか、Rubyist が作らないと滅ぶw

CircleCI の料金表のmedium のクレジットは、
Docker 10, Windows 40, Mac 50

囲い込みとは思えないほど、高い

721 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 02:12:51.70 ID:72EwLK9c.net]
>>704
Windows11のハード対象外は囲い込みとは言わないのでは?

722 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 03:06:03.91 ID:5+dT7ErM.net]
>>704
アップルなんて自社製のマシンでしか動かないんだけど
アプリも自社製のマシンでしか開発できないし
ストアも自社製しか認めない
自社製のアプリの邪魔になるものは開発を認めなかったり審査で落す
こういうのを囲いこみっていうんだけど・・

723 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 03:15:43.43 ID:MgzERarD.net]
Appleは開き直ってとことん囲い込みを追求してるからこそ逆に認められてるところがある
開発言語からしてObjective-CとSwiftっていう独自言語で徹底してる
MSは中途半端にC++標準に擦り寄ってるのがよくないね

724 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 05:45:38.18 ID:rvvBDzFl.net]
VSCodeが囲い込みツール?
Linuxでも動くしそもそもOSSなんだけど…
Visual Studioと言うならまだわかるけどw

725 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 06:08:26.54 ID:6oNwnU1m.net]
iTunesが おきあがり
なかまに なりたそうに こちらをみている!
なかまに してあげますか?

┌───┐
│⇒はい│
│いいえ│
└───┘

iTunesが なかまに くわわった!
QuickTimeが なかまに くわわった!
Bonjour for Windowsが なかまに くわわった!
Apple Mobile Device Supportが なかまに くわわった!
Apple Software Updateが なかまに くわわった!
MobileMeが なかまに くわわった!
Apple Application Supportが なかまに くわわった!

Apple Software Updateが Safariを よびよせた!
Apple Software Updateが iPhoneソフトウェアを よびよせた!


:::::::::::.: .:. . ∧_∧ . . . .: ::::::::
:::::::: :.: . . /彡ミ゛ヽ;)ヽ、. ::: : ::
::::::: :.: . . / :::/:: ヽ、ヽ、i . .:: :.: :::
 ̄ ̄ ̄(_,ノ  ̄ ̄ヽ、_ノ ̄


QuickTime をアンインストールしますか?
>はい
なんとiTunes はしんでしまった!
QTTASKはぶきみにほえている!

726 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 07:22:48.15 ID:Sf6AbPmi.net]
「資源を独占的に確保すること」の意味での囲い込みw
Windowsで市場を独占し、離れる場合のリスクとコストを高めてから、高コストを強いるw
appleがやってるのは独占ではないけど、購入後に高コストを強いる同じ仕組みw

727 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 08:04:40.58 ID:KarnMDBa.net]
macbookで動くwindows見かけると思わず笑みがこぼれるわ



728 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 08:06:57.63 ID:PW5qBu6I.net]
MSが資源を独占的に確保したわけじゃなくて
作りやすいWindows、使いやすいWindowsとユーザが選んだ結果だからね
相乗効果で結果的に市場を埋め尽くしているに過ぎず独占しているわけじゃないけどね

Macが誰にでも開発しやすい環境だったり
linux等が誰にでも使いやすい環境だったならMS市場にはならなかったかもしれない
でもまあMacもWindowsと同じ道を進んでいたら生き残っていなかったかもしれないけど

729 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 08:13:25.03 ID:bHihdD5b.net]
互換性重視で昔はシェア伸ばしたMSも
なぜかAppleのマネして切り捨てするようになってシェア落としてる。

730 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 08:32:50.33 ID:Sf6AbPmi.net]
ほんと頭悪いな・・・OS資源を独占的に確保してるでしょw

731 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 09:03:46.71 ID:bHihdD5b.net]
マカーはほんと馬鹿だからな

732 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 09:09:22.13 ID:PW5qBu6I.net]
>>718
OS資源って何?

733 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 09:12:25.62 ID:rQC9vpY7.net]
嫌ならLinuxでも使えば?w

734 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 09:15:06.51 ID:6oNwnU1m.net]
>>717
MCAの件で愛想尽かしたのに
結局ミイラ取りがミイラってやつだね

735 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 09:16:17.27 ID:haNY4PtR.net]
最近はGPUパススルー備えたKVMでLinuxでもほぼパフォーマンスペナ無しでWindows用ゲームできるらしいけどほんまなん?

736 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 09:20:09.35 ID:KE5lJ15x.net]
>>723
嘘やろ
ハイパーバイザーとゲストosの間を遷移するのにオーバーヘッドかかるやろ
いくらCPU支援機能があるからって無視はできない

737 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 10:53:37.87 ID:6oNwnU1m.net]
同じソフトをホストとゲストで使い比べるとやっぱ体感速度違うからな



738 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 12:39:31.11 ID:Sf6AbPmi.net]
apple製品は買ってないし、Native LinuxもWindowsも使ってるが、WindowsのVC++使いはスレ違いの話題をいつまで続ける気なんだ?

739 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 18:58:24.97 ID:NAR86/dh.net]
>>726
OS資源って何?

740 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 19:10:47.53 ID:3+VV5Xxj.net]
50代になると30代の2割以下の量になるらしいから大事にしろよ

741 名前:デフォルトの名無しさん mailto:sage [2022/03/25(金) 19:30:24.85 ID:5XdEy59o.net]
ぐり@関賢太郎 航空軍事記者
https://twitter.com/gripen_ng/status/1507210000024104972
何年か前、日本から韓国へのフッ化水素輸出に制限をかける外交摩擦あったよね。
あれで韓国製のガリウム砒素半導体を輸入していたロシアへ供給が止まり、ロシアの軍用AESAレーダーの生産が遅れ、戦闘機への搭載もできなくなるドミノ倒しになっていたことに気付いてしまった。
国際社会から孤立ってこわい
(deleted an unsolicited ad)

742 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 02:00:27.84 ID:w1Z+3JKm.net]
>>726
OS資源って何?

743 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 22:01:10.04 ID:+PRSGS1Y.net]
整数で添え字アクセス可能なコンテナの要素を自身の添え字0〜n-1で初期化したい場合どう書くのがスマート?
<algorithm>の他の手段と同様の記述スタイルで書けるならそれに統一したいのでつが、、、
やっぱ
 std::vector<int> arr((size_t)n);
 for (int i = 0; i < n; i++) { arr[i] = i; }
というふうにチョー具体的にfor文とループ変数iを手で書くのに勝る妙案無し?

744 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 22:09:33.63 ID:RpKSs2nj.net]
>>731 https://cpprefjp.github.io/reference/numeric/iota.html ?

745 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 22:15:39.57 ID:O3+9n+yo.net]
イオタ\(^o^)/

746 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 22:31:07.82 ID:+PRSGS1Y.net]
>>732
なるほど<numeric>とかヘッダファイル自体使ってなかったわチョーdクス、

747 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 22:42:20.07 ID:QEpYloYB.net]
イオタ\(^o^)/は草



748 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 22:51:45.23 ID:vQB7bLSM.net]
>>726
OS資源って何?

749 名前:デフォルトの名無しさん mailto:sage [2022/03/26(土) 23:43:36.18 ID:9q2PYIcF.net]
また自演してるしwwwww ようやくiotaを知ったのねw

750 名前:デフォルトの名無しさん [2022/03/27(日) 18:49:59.41 ID:lspELT3N.net]
初歩的な質問すみません、2,3時間かかってもわからなかったのでここで質問させてください。
独学で3か月くらいの初心者です。
int iResult=1;
wchar_t* ShowStr = new wchar_t;
wsprintf(ShowStr, L"socket failed with error: %d", iResult);
delete ShowStr;
ShowStrはポインタで確保したのでdeleteしないと溜まってしまいますよね?
ShowStrは配列なのかなと思ったのですがdelete[]だとVS先生に怒られてしまいます。
配列の先頭だけ消してしまって残りの部分が参照できない形で残ってるとかそういうことなのかなと思った
のですが、だとすればどうすれば良いかもわからない次第です。
deleteの使い方一応は調べてみたつもりなのですが、
どなたか教えていただけませんでしょうか。

751 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 18:54:07.95 ID:uW5IEa4H.net]
#include <string>

std::wstring mojimoji = L"モジモジ ///";

752 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 18:56:35.96 ID:7vIiVU2b.net]
>>738
単純に配列じゃなくて
wchar_t一個だけのメモリを確保してるからdelete

753 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 18:58:29.72 ID:7vIiVU2b.net]
>>738
あと、一個分のメモリしか確保できてないから、そこに
socketなんちゃらって文字列入れようとするとエラーになると思われる
だから
wchar_t* ShowStr = new wchar_t[200];
みたいにするのが正解か

754 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 18:59:23.81 ID:7vIiVU2b.net]
で、>>741の変更をした場合は
delete[] ShowStr;
になるはず

755 名前:デフォルトの名無しさん [2022/03/27(日) 19:31:30.48 ID:lspELT3N.net]
>>742
ありがとうございます。
おかげさまで解決できました。
コンパイル時にどれだけのメモリを確保するのかは明確に分かっていたほうがよいのですね
今日は初めてダイアログからソケットをつなげることが出来たし、やっとエラーが出なくなって
何とか枕を高くして眠れそうです。ありがとうございます。

756 名前:デフォルトの名無しさん [2022/03/27(日) 19:33:51.31 ID:lspELT3N.net]
>>739
wstringというものを初めて知りました。
今回はLPWSTRの必要があったので使わなかったのですが、
ワイド文字を使う上で必要な知識が増えました。
ありがとうございます。


・・・手帳持ちなんだけど就職できるといいなぁ、未経験で

757 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 19:45:45.04 ID:uW5IEa4H.net]
>>744
うまくいきますよーに☆



758 名前:デフォルトの名無しさん [2022/03/27(日) 19:52:33.76 ID:lspELT3N.net]
>>745
ありがとうございます(≧∀≦๑)ゞ

759 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 20:24:01.35 ID:nbMAc3Vl.net]
pythonのプラグイン作成ライブラリpybind11は今やwstringが標準
さもないとWindows対応できない

760 名前:688 mailto:sage [2022/03/27(日) 21:15:33.59 ID:Fwb/ewtW.net]
>>699
ありがとうございます!
C++14までの設定でそれでいけました!
マジ黒魔術w

そしてC++20なら>>690がいけて感動w
concept神すぎる…!!

761 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 21:21:28.16 ID:PoGWmBV8.net]
wstringしか使えないゴミライブラリなんて使わないでいいよw いつもの自演君w

762 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 21:35:17.61 ID:VLMZp/O7.net]
wstring なんかいらない…普通に std:::basic_string<char16_t> とかで十分
https://ideone.com/uQKe4J

というか、wstring なんかさっさと obsolete/deprecated にすればいいのに、ほんと馬鹿ですね

763 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 22:00:38.95 ID:rG9TE9zE.net]
std::basic_string<TCHAR>とかはまれによくやる……
が操作や表示に_tで始まる関数を使わなければならないから
移植性とともに魂を損なわれていく気がするので
特段の理由が無い限りWin32APIの方を末尾Aので呼ぶことにしてstd::stringで通すようになった今日このごろ……

>>749
残念、自演君は私だ

764 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 22:07:12.24 ID:nbMAc3Vl.net]
> まれによくやる

どっちなの

765 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 22:08:19.23 ID:PoGWmBV8.net]
2垢でIDがうまく操作できてない感出まくってるw

766 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 22:10:49.45 ID:rG9TE9zE.net]
>>753の書くコードはことごとく根拠が欠けているのであろうことは想像に難くない
検証とかどこ世界の話?、レヴェルかと、

767 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 22:33:58.84 ID:nbMAc3Vl.net]
確かに反ワクチンとかウクライナはネオナチとかこじらせてそう



768 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 22:59:19.24 ID:K7MWSPEs.net]
>>751
WindowsというOSはwchar_tが標準装備であってcharを受け付ける***A はWin9xのレガシーなのだよ...

Win32API向けの文字列操作はwchar_t系に統一するべきなのだが...

大体のC/C++コードは(ファイルIOですら)charがベースなので、Win32APIとの相互運用で***Wを使うことが苦痛になる

769 名前:デフォルトの名無しさん [2022/03/27(日) 23:25:52.46 ID:QKAmAp06.net]
Microsoftは馬鹿かと思う。
勝手にBitlockerがかかって、「この箱には鍵がかかっています。その鍵をあける番号は
箱の中にあります。」の連続。

770 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 23:36:32.07 ID:PoGWmBV8.net]
そんなことみんな知ってて言ってるだろw 何を今更w
通常C/C++だと低レベルな処理はプラットフォームでAPI分けるから、Windowsでは仕方なく(可能な範囲で)ワイド文字を使用する仕様にしたりすることもある、というくらいw
でもターゲットがWindowsだけだと逆に癖で文字にtypedef切ったり_T使ったりする不思議w

771 名前:デフォルトの名無しさん mailto:sage [2022/03/27(日) 23:49:21.31 ID:nbMAc3Vl.net]
Pythonの内部コードはUTF-16らしいよ

772 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 02:22:28.60 ID:51Y1Thh9.net]
それも違うw
https://peps.python.org/pep-0393/

773 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 08:08:46.35 ID:DkKihmtS.net]
ボクが考えるWindowsスレですか、ここは。

774 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 08:45:03.78 ID:zvnGSWPp.net]
どうでもいいけど、黒魔術とかコンセプト神とかなんとか大袈裟な言い回し、ブログとかでよく見るんだろうけど
あまり真似しない方がいい気はする

775 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 08:56:12.53 ID:HSBaMW3J.net]
やたら絵文字を使いまくる頭悪そうなメールとノリが似てるね

776 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 11:30:00.76 ID:npKEPSZJ.net]
>>759
Pythonじゃなくてジャバスクのstringの内部表現やろ
UTF16って意外と標準採用されてるからな
至極単純にUTF8と比べてCPUパフォーマンスは良いし

777 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 11:35:09.55 ID:4U9zlcIi.net]
鼻から悪魔とか自分を足を撃つとか
そういう言い回し好きなアマチュアが吸い寄せられるのがC++って感じする

もちろん、仕事で嫌々使わされてる連中は除く



778 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 11:37:17.98 ID:npKEPSZJ.net]
>>756
標準装備っていうかカーネルがUNICODE_STRINGっていう非null terminatedな明示長stringしか扱わないからな
つまりA版APIは変換コストがかかる

779 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 13:30:08.02 ID:HSBaMW3J.net]
fjによく出没していた河野ってやつが言ってた
「C++はちょっと気が狂ったようなところがある言語」
あんまりあいつに同調したくないがこれは言い得て妙だ

これは何から何までキチガイ仕様ばっかりという意味ではない
たまに首をかしげる変なところがあるってことだ

780 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 13:39:02.76 ID:yqBWM3bb.net]
難しいコード書けても設計出来ないとなんの意味もないしな

781 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 15:23:35.37 ID:DkKihmtS.net]
他人が読めないコード書いてマウンティングする文化があるからな。

782 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 16:26:35.03 ID:R1D4p1O0.net]
>>765
それはどちらもCだろ
C++の黒魔術とかの表現は気持ち悪いと思う

783 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 21:04:31.59 ID:f80bfIyg.net]
>>765
それは C だ…

784 名前:デフォルトの名無しさん mailto:sage [2022/03/28(月) 21:31:46.30 ID:Uu0YihOb.net]
色々すっきりわかりやすくなってプログラミング効率の良いRustと比べればC/C++どちらも

785 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 08:04:21.14 ID:mWQ/GdlN.net]
>>772
学習曲線をなだらかにしてから言いな。とりあえずNGにしとくわ。

786 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 08:09:47.04 ID:LEuYcsU9.net]
> 学習曲線をなだらか
C++が言うな

787 名前:デフォルトの名無しさん [2022/03/29(火) 09:12:38.67 ID:V3Kl11Pp.net]
学習曲線をなだらかって何



788 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 09:40:35.27 ID:FuLLa2J8.net]
>>765
最近買ったRust本の帯に、もう二度と自分の足を撃ちたくないならって書いてあった。何なのこれ?

789 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 09:40:51.62 ID:UOqSecAo.net]
学習曲線なだらかだったらいつまでたっても習熟が進まないんだよなあ

790 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 10:05:42.16 ID:WvuxHdPq.net]
舌触りなめらか

791 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 10:21:02.72 ID:HFhqj5qW.net]
ちんちんシュッシュッシュッ!

792 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 10:46:35.81 ID:MRVYy131.net]
>>776
何なのってFPSゲームでしょ

793 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 11:27:10.53 ID:l/5rTAs8.net]
>>777
絶壁だったら学習できないよ。
第一、プログラミング言語を学習したいなんて奇人は少ないだろ。普通はプログラムを作りたいだけだし。

昔Accelerated C++みたいなC++を使うための入門書があったけど、ああいうのを整備する団体とか無いんかな。

794 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 13:24:22.14 ID:oJxqSb9h.net]
>>776
https://qiita.com/evid/items/adfa237f4dc6b73a2b5d#fnref5
要するに自分で自分を壊すような話

795 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 13:36:11.92 ID:owrRZ3L6.net]
設計ヘタクソなヤツは致命的、いや、池沼的なの居るからな
Rust養成ギブスで勉強してこいカスって感じ

796 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 15:03:31.53 ID:ijYpt7F/.net]
>>783
Rustやったところで、Pythonのインデントスタイルの勉強と一緒でRustスタイルのコーディングしかできなくなるだけだよ。
C++のプログラム技術向上のためにRustを勉強するとか、まったく意味無い。

797 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 15:26:21.04 ID:6kEE5hUV.net]
>>784
その通り
しかしRustの方がプログラミング効率が良くて書きやすくて保守性も良いから
普通はC++使わなくなるよな



798 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 15:32:53 ]
[ここ壊れてます]

799 名前:.51 ID:owrRZ3L6.net mailto: グローバル変数でi宣言してるヤツとか
理由聞くと書くの面倒くさいからとか
池沼にも程がある
[]
[ここ壊れてます]

800 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 19:18:21.80 ID:ijYpt7F/.net]
>>785
スレ違い。ここに書き込むの禁止な。
下のスレに行け。
C vs C++ vs Rust Part.3
ttps://mevius.5ch.net/test/read.cgi/tech/1643289587/

801 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 19:46:14.12 ID:LEuYcsU9.net]
面倒だからメンバは全部public

802 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 20:17:40.82 ID:rprUptDm.net]
structって書けよ

803 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 22:21:49.66 ID:JBheGd8b.net]
structなんぞ頼らずnamespaceに全部書けよ

804 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 22:27:01.22 ID:pxj3Uqek.net]
structはデフォルトがprivateでclassはデフォルトがpublicなことを考えるといっそclassを消してしまった方が愚かな設計がなくなるのでは?

805 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 22:40:45.57 ID:q6aCWf20.net]
>>791
それってRustじゃん

806 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 22:45:51.77 ID:42Nx7yvC.net]
RustRustうるせーっつーの
巣に帰れ

807 名前:デフォルトの名無しさん mailto:sage [2022/03/29(火) 23:12:23.14 ID:LEuYcsU9.net]
キチガイrust厨しね



808 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 06:33:06.22 ID:8NFBSa0P.net]
>>781
学習曲線は横軸時間で縦軸習熟度の曲線やから絶壁が効率よくて、水平やったら誰も理解できん、という曲線やで

809 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 07:12:05.54 ID:7Zu/8ZF2.net]
>>791
おいおい逆だろw
禿もアクセス種別の省略時の解釈は十中八九誤りだったと言ってるね

810 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 08:22:59.56 ID:WX1Rp50C.net]
>>796
本当だ逆だった…お恥ずかしい

811 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 12:47:10.06 ID:mFVNBRSc.net]
しばらくpythonとか触ってたけど今更C++の隠蔽設計とかバカらしく思えてきた

812 名前:776 mailto:sage [2022/03/30(水) 17:13:54.11 ID:+a7BCMWw.net]
>>782
ありがとう

813 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 19:26:05.50 ID:xRfGRGrW.net]
オープンな性格なのです

814 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 23:38:58.59 ID:rveKwnBH.net]
>>767
河野@琉球大学?(記憶モード

815 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 23:47:02.15 ID:rveKwnBH.net]
しばらくgoとか触ってたけど今更C++のクラスベースのオブジェクト指向とかバカらしく思えてきた

816 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 23:49:39.17 ID:rveKwnBH.net]
ていうかプログラミング言語とか人間の愚かさに対する対策なので
特にシンタックスシュガー的な言語要素は突き詰めれば突き詰めるほど頭おかしい言語になっていくのは必定

817 名前:デフォルトの名無しさん mailto:sage [2022/03/30(水) 23:52:55.50 ID:eQfKD0DM.net]
>>802
GoもRustもclassなんてなくてstructしかないが困らないもんな



818 名前:デフォルトの名無しさん mailto:sage [2022/03/31(木) 01:51:31.09 ID:nXMYhSR8.net]
>>802,804
チンチャそれな!

819 名前:デフォルトの名無しさん mailto:sage [2022/03/31(木) 02:10:02.10 ID:lTtwcp13.net]
C++とオブジェクト指向を関連付けて考えるからおかしくなる
C++の内包する多様なパラダイムの中にオブジェクト指向が含まれてるだけ
C++の良いところは何でもありなところ

820 名前:デフォルトの名無しさん mailto:sage [2022/03/31(木) 02:53:58.08 ID:lTtwcp13.net]
C++のclassもオブジェクト指向のための文法として捉えるべきではない

821 名前:デフォルトの名無しさん mailto:sage [2022/03/31(木) 03:00:57.77 ID:3NXOGCnE.net]
C++のclassにpolymorphicというキーワードがあればclassとして理解しやすかっただろうに

C++自体が古いから仕方ない面もあるのだが

822 名前:デフォルトの名無しさん mailto:sage [2022/03/31(木) 05:37:45.41 ID:ZLovgCJ7.net]
>>804
C++ も struct だけでもたいして困らんけどな

823 名前:デフォルトの名無しさん mailto:sage [2022/03/31(木) 06:50:05.99 ID:yEOSoCRj.net]
SmalltalkやEiffielみたいにOOPとしての完璧さを目指した言語ではないからなC++は
PascalへのアンチテーゼがCであったように、完璧さを目指すことへのアンチテーゼでもある
そこを批判するやつとは根本的に相容れない

824 名前:デフォルトの名無しさん mailto:sage [2022/03/31(木) 06:54:16.14 ID:ivAOVlIc.net]
CからC++へ行かずに
CからGoとRustへ行けば十分に問題ない

825 名前:デフォルトの名無しさん mailto:sage [2022/03/31(木) 08:09:28.04 ID:il5bYK9P.net]
>>811
>>787

826 名前:デフォルトの名無しさん mailto:sage [2022/03/31(木) 17:34:12.61 ID:4cSTCvUa.net]
>>767
言い回しがそいつのtwitterに出てくる感じと同じすぎる
ワイ大学生なんだけどその人20年以上前からそんな口調なのか

827 名前:デフォルトの名無しさん mailto:sage [2022/03/31(木) 17:45:20.70 ID:R4GrqV7T.net]
河野氏になんか恨みあんの?
俺知り合いだから代わりに言っとくよ



828 名前:デフォルトの名無しさん mailto:sage [2022/03/31(木) 19:53:32.15 ID:mHRscCZz.net]
if (xmm0 == xmm1)って下のやり方しかない?
_mm_movemask_epi8(_mm_cmpeq_epi...) == 0xFFFF

829 名前:デフォルトの名無しさん mailto:sage [2022/03/31(木) 21:25:00.23 ID:SxSNo1AU.net]
>>814
嫌な知り合いすぎる
無自覚?

830 名前:デフォルトの名無しさん mailto:sage [2022/04/01(金) 01:39:47.02 ID:/eP2awHk.net]
PTESTがあるぞ

831 名前:デフォルトの名無しさん mailto:sage [2022/04/01(金) 20:07:44.20 ID:kF+DLIFz.net]
>>817
_mm_testc_si1281命令でできるのか
サンクス

832 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 03:00:41.15 ID:JI80ciY+.net]
ハンガリアン記法、いまだ健在なり

833 名前:デフォルトの名無しさん [2022/04/02(土) 05:57:08.65 ID:iaVgC0+D.net]
プログラムほぼ未経験だけどこれから始めます
今は坊主頭の人の本を読み始めたところです
IDEのCLionを考えています
他におすすめあったら教えてください

834 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 08:28:40.83 ID:KzPuamrt.net]
Visual studioオススメ。VSCode+CMakeでもいいぞ

835 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 12:16:55.77 ID:roqf8g4r.net]
bitsetで実装し終わった後にvector<bool>がconstexpr対応してる事知ったんだが?
はー先に教えてくれよ(クソデカため息)

836 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 12:49:25.68 ID:/j0/DBCU.net]
vector<bool>なんか使っちゃいけません

837 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 14:22:05.97 ID:YBLKDYh3.net]
bitsetを実現するのならvector<bool>は妥当
だと思う派



838 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 14:30:40.42 ID:YBLKDYh3.net]
しかしvectorKbool>様のブツ(一般に数千ビットとかのデカくて比較的疎なやつ)がconstexpr対応している
と特段のありがたみと
かあるん??

839 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 14:35:10.49 ID:X+p83iug.net]
二進法で書いちまった方が…

840 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 14:36:56.48 ID:T5fexWVc.net]
vector<bool> 駄目って言ってる奴らって思考停止のバカでしょ

「特殊化されてるのである時は注意が必要」というのを理解できず思考停止でとりあえず禁止と見なしてるバカ

841 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 14:38:37.01 ID:YBLKDYh3.net]
これか
https://cpprefjp.github.io/lang/cpp20/more_constexpr_containers.html
やっぱ内部でループのみならず、new / deleteするような関数までconstexprであってほしいと願うマニアが一定数居るんやな……

842 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 14:40:50.98 ID:CNYN+CEs.net]
キューとかスタック的な使い方なら自然だと思うね

843 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 14:44:28.98 ID:p6D1htC0.net]
一度作ってみたけどconstexpr関数内でnewしたらその関数内でdeleteまでしなきゃいけないのは使いづらい気がする

844 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 14:53:16.59 ID:ARI85DWJ.net]
まずはvector<bool>で実装してみて問題あるなら考える派

845 名前:デフォルトの名無しさん mailto:sage [2022/04/02(土) 14:53:28.58 ID:YBLKDYh3.net]
だがちょっとまって欲しい毎秒1億も2億も回るようなループの中でこそ高速化が必須だが
そんなループ内でnew /deleteしようとする発想が最初からなんかおかしいのではないか

846 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 18:44:27.58 ID:NmP3n2Yz.net]
struct Hoge
{
std::vector<Hoge> hoges_;
};

ってなんでコンパイル通るの?
hoges_の定義時点ではまだ、Hogeの定義は完了していないのに。

847 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 19:05:25.24 ID:Yvr+7/y4.net]
struct Hoge {
 Hoge* ptr;
};
が通るのと同じ理屈なんじゃない?



848 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 19:25:23.89 ID:7tOdFV5I.net]
ソースコード次第やな
allocatorでサイズ使いそうなもんだけど

849 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 19:33:06.66 ID:5C/3HoVM.net]
宣言の時点では別に適当

850 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 19:35:01.81 ID:BfkCmsi5.net]
宣言?
どこにも宣言のみの記述はありませんけど?

851 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 19:48:52.09 ID:CJTxuxUG.net]
半角全角使うな厨が絶滅しますように (AA略

852 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 20:07:54.56 ID:Mnzv/avn.net]
定義自体は再帰してても大丈夫じゃない?

853 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 20:32:55.79 ID:sNbs7j4z.net]
>>839
あそう、だったら

struct Hoge {
 Hoge hoger;
};

これもOKだろw

854 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 20:58:54.41 ID:NWvQ4doQ.net]
参照だったらサイズが一意になるから問題なく処理できる
実態だったら無間地獄に落とされるからNG

855 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 21:17:02.42 ID:sNbs7j4z.net]
>>841
839は参照じゃないじゃん
話し通じないな

856 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 22:20:50.07 ID:wOH19oBO.net]
えっstd::vector<T> hoge_; とやった場合Tが何であってもその場でhoge_のサイズは決まるから
struct Hogeのメモリレイアウトは鎧袖一触で決まるか
ら何の問題も無い

決まらないのはhoge_のインスタンスがポインタで保持することになるヒープ上の領域のサイズであって
struct Hogeのサイズは上述の通りstruct Hogeの定義を一通り見たとき鎧袖一触で決まっているから
Hoge::hoge_をインスタンス化するタイミングで問題無くインスタンス化されるという印象のような希ガス
いや知らんけど
※ 個人の感想です

857 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 22:33:18.09 ID:wOH19oBO.net]
とオモタがなんかVS2019(C++14)で試したら以下のコードのビルドが通る怪現象やな……
template<class T, int N>
class VarArr {
 int T[N];
};

struct Hoge {
 VarArr<Hoge, 3> m_arr;
 int m_x;
};

Hoge x;

多分環境に拠るんだと思う



858 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 22:35:40.26 ID:wOH19oBO.net]
VarArr<T, N>の定義をまつがえたサーセン……orz
以下のコードなら正しくビルドエラーになる
template<class T, int N>
class VarArr {
T m_arr0[N];
};

struct Hoge {
VarArr<Hoge, 3> m_arr;
int m_x;
};

Hoge x;

ワイの答えはこれや!

859 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 23:14:48.08 ID:Mnzv/avn.net]
>>839で適当に回答したけどメンバとしてを実体で持つかポインタで持つかで通るかが決まるな

860 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 23:38:16.75 ID:sNbs7j4z.net]
struct Hoge
{
int a[sizeof(Hoge)];
};
はHogeがまだ定義されていないから、コンパイルできない
だったら、なぜ
std::vector<Hoge> hoges_;
は許可できるんだ

861 名前:デフォルトの名無しさん mailto:sage [2022/04/03(日) 23:53:21.86 ID:dOp+WKyA.net]
>>847
規格的に問題ないからだが、まあポインタなんでサイズ知らんでもええからだな

862 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 00:18:36.05 ID:F+M9/rKi.net]
>>847
std::vector<Hoge> hoges_; はクラスないしstructのサイズには影響しないからじゃないの?
そのクラスないしstructはstd::vector<Hoge> hoges_へのアドレスを保持するだけでしょ?
クラスないしstructの中でのhoges_のサイズはすでに決まっている

863 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 00:23:58.82 ID:NuCanqg0.net]
>>847
>>843に書いたが
struct Hoge {
 std::vector<Hoge> hoge_;
};
の実質は
struct Hoge {
 struct {
   (&(hoge_[0])を指すポインタ);
   (管理用のいくつかのメンバ)
 } hoge_;
};
とゆーことなのでstruct Hogeの中にhoge_[0..]の実体が埋め込まれるわけでは無いから、
hoge_[0..]の型が決まっていなくともstruct Hogeのサイズは問題無く決まるというしくみ

一方hoge_[0]の実体がstruct Hogeに埋め込まれる>>845のケースは気体どおりエラーになる
というワケ

864 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 09:09:53.47 ID:14cK0a9Z.net]
>>843
鎧袖一触の使い方間違いで草w

865 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 23:12:20.74 ID:JNKuDAOB.net]
4、5年c++やってるけどまともなものを作れない
どれくらいで、ネットで有名なソフトって作れるものなの?
例えばvscodeみたいな便利なアプリ

866 名前:デフォルトの名無しさん mailto:sage [2022/04/04(月) 23:46:47.47 ID:9GHqD2yn.net]
>>852
VScodeはElectronつまりJavaScriptで書かれてるよね

867 名前:デフォルトの名無しさん mailto:sage [2022/04/05(火) 00:26:55.67 ID:btSnYNGS.net]
>>852
C++Builderが楽だよ



868 名前:デフォルトの名無しさん mailto:sage [2022/04/05(火) 01:43:21.89 ID:QuV3GhxG.net]
windowsは触ったことがない

869 名前:デフォルトの名無しさん mailto:sage [2022/04/05(火) 02:00:35.56 ID:QYslDBWm.net]
ならばElectronかTauriがオススメ
WindowsだけでなくMacでもLinuxでも動くマルチプラットフォーム

870 名前:デフォルトの名無しさん mailto:sage [2022/04/05(火) 06:11:04.09 ID:PM3+0qST.net]
>>852
言語だけ触ってても無理
自分は◯◯を作るんだという
一途な意思がいる

ネットでウケるかどうかは通常どうにもできない
もし市場の需要を読んで開拓ができるなら
もうそのままプロになれる

871 名前:デフォルトの名無しさん mailto:sage [2022/04/05(火) 10:33:40.77 ID:FcLzG6G8.net]
>>852
まともって言うか一定規模以上のソフトを作ろうと思ったらオブジェクト指向デザインパターンを網羅していく事の方が大事
難しいハッキングをやるよりも設計の方がなんだかんだで難易度高いからな

872 名前:デフォルトの名無しさん mailto:sage [2022/04/05(火) 17:09:26.03 ID:PM3+0qST.net]
「成功者」の法則をなぞるだけでは成果は出せない
そんなの誰でもできるから

形振り構うことより興味の向くまま突っ走るほうが肝心
そうして何かを成し遂げると自分なりの法則ができている

それまで周りは散々バカにしてくれるが
そんなのに折られないメンタルも大事だ

873 名前:デフォルトの名無しさん mailto:sage [2022/04/05(火) 17:46:09.74 ID:YcgsN5By.net]
メモリマップドファイルのライブラリが標準入りするのってまだまだ先ですか??
標準ライブラリとするのに何か問題でもあるの?

874 名前:デフォルトの名無しさん mailto:sage [2022/04/05(火) 19:10:03.35 ID:Ssg9XCyk.net]
<filesystem>ですら入ったの最近だしあんまり期待してない

socketとかのネットワークライブラリも標準にはないんだぜ?

875 名前:はちみつ餃子 mailto:sage [2022/04/05(火) 19:53:34.34 ID:AUzgrMft.net]
>>852
個人でなんらかのソフトを作る場合には「動くプログラム」を意識するといいよ。
構想通りに設計しようとするよりは機能を極小に絞ってでも動く状態のプログラムを作ってみて、
それを拡張していくという形にすれば行き詰まったところが学ぶべきことが潜んでいるところだとわかる。

ある程度までいったら最初から作り直したくなるときがくる。
学びながら作ったものなんてろくでもないんだから作り直すはめになるもんなんだよ。
どうせ作り直すと割り切って色々やってみればいい。

876 名前:デフォルトの名無しさん mailto:sage [2022/04/05(火) 20:56:02.32 ID:6DtMUNMI.net]
Googleの人もイテレーティブな開発が良いって言ってたなあ

877 名前:デフォルトの名無しさん [2022/04/05(火) 21:08:43.94 ID:79YAP4SX.net]
あーすべき、こーすべきと雁字搦めにPGを縛る硬直的で強迫的な教条主義が
投げやりなやっつけ仕事を大量生産するという



878 名前:ウ訓から色々な提案が出てるのに
教わったことにしがみつく後ろ向きな人が悪しき循環を継続させちまう
[]
[ここ壊れてます]

879 名前:デフォルトの名無しさん mailto:sage [2022/04/05(火) 21:15:39.04 ID:YcgsN5By.net]
C++って他の言語と違って何でも出来るから情報収集に時間使いすぎるんだよな
プランAからZまであらゆる手法を検討して最善手を打たなければどこかで詰む事になる

880 名前:デフォルトの名無しさん mailto:sage [2022/04/05(火) 21:15:57.95 ID:rM7yNqDT.net]
大昔の記憶だけどメモリマップというかネットワーク系のライブラリはC++に追加されないのかって聞いたときに
OS依存の仕様は実装されないって聞いた記憶あるけど最近のC++は方針変わったのか?

881 名前:デフォルトの名無しさん mailto:sage [2022/04/05(火) 22:34:00.51 ID:QFtrY3nt.net]
C++とSTLは別だよ

882 名前:デフォルトの名無しさん mailto:sage [2022/04/05(火) 22:39:47.79 ID:vLZKRt0y.net]
threadみたいにするならかまわんのだろ

883 名前:デフォルトの名無しさん [2022/04/05(火) 22:54:42.49 ID:79YAP4SX.net]
プロセスがサポートされないアレでか

884 名前:はちみつ餃子 mailto:sage [2022/04/05(火) 23:18:25.53 ID:AUzgrMft.net]
スレッドは OS が提供するスレッドと一対一で対応することを意図しているという記述がある。

https://timsong-cpp.github.io/cppwp/n3337/thread.threads#1

スレッドを持たないシステムに対応付けるならスレッドの生成に常に失敗するような実装になってても仕様には反しないんじゃない?
noexcept は例外を送出しないことを保証するけど実行時エラーがないことを保証するわけではない。

885 名前:デフォルトの名無しさん [2022/04/05(火) 23:23:24.49 ID:79YAP4SX.net]
今さらDOSでC++11か
いや否定はできんけど・・・

886 名前:デフォルトの名無しさん mailto:sage [2022/04/05(火) 23:31:23.00 ID:EtikemGC.net]
プロセスを持ち出す意味がわからん
スレッドがあればいいんじゃ?

887 名前:デフォルトの名無しさん [2022/04/05(火) 23:37:46.31 ID:79YAP4SX.net]
なんで?
アドレス空間の多重化とプロセス間通信はOSが違ったら移植性なしで割り切るの?



888 名前:デフォルトの名無しさん mailto:sage [2022/04/05(火) 23:42:47.00 ID:EtikemGC.net]
それがないとスレッドも許されんという理屈がわからない

889 名前:デフォルトの名無しさん [2022/04/05(火) 23:52:53.92 ID:79YAP4SX.net]
スレッドも許されないなんて主張してないが

890 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 07:13:16.72 ID:e/YNs2XJ.net]
質問ですがイテレータ間の距離はstd::distance<T>(first, last)で求められるそうなんですが
求めた距離を再びイテレータに戻す場合はどうすれば良いですのん?firstとlastがラ
ンダムアクセスイテレータならfirst + std::distance(last, first) == lastが成立するという具合に
足せば良いけどランダムアクセスイテレータか否かによらず共通に使えるテンプレートは?

891 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 08:10:41.61 ID:tJlAug24.net]
>>876 std::next() https://cpprefjp.github.io/reference/iterator/next.html

892 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 08:51:32.67 ID:hbDmvmaG.net]
>>876
std::advance(イテレタ,求めた距離)

893 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 14:47:30.60 ID:/VxyOfiN.net]
technical default とかいう新技が出てきたね

894 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 18:03:31.71 ID:OIlaSdNT.net]
みなさん多次元配列ってどうやって持ってますか?
・blas, lapack等fortranの資源を使いたいからローメジャー、カラムメジャーは宣言時に決めたい
・添字アクセスがネイティブの多次元配列並みに早い
・STLコンテナみたいに使える
等の条件を満たす良いライブラリありますかね

本当はSTLに入ってほしいんですが、なぜ未だにないんですかね?

895 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 18:15:07.58 ID:Iu/ahyl1.net]
ネイティブの多次元配列とは

896 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 18:18:59.68 ID:OIlaSdNT.net]
>>881
ああすみません私めは言語障害者だから変な言葉使ってるかもしれません
Cの多次元配列のことを変な呼び方をしてしまいました
すみません

897 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 18:30:19.00 ID:aY4pnG+o.net]
eigen gmtlとか?



898 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 19:07:48.95 ID:ofj8wLUE.net]
1つめがよーわからんけど
・次元数はコンパイル時決定
・要素数もコンパイル時決定
・子要素のサイズは全て同じ(arr[0].size()==arr[1].size() が常に成り立つ)

ってことでええの?
それなら単純にstd::array<std::array<T, 4>,5>でいいとは思うが

899 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 19:36:43.45 ID:vJ8PYFJ1.net]
全部arrayだとスタックに配置される事あるからvector<array>でやってるな

900 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 21:17:51.29 ID:tUlkAQY7.net]
>>880
std::mdspanというのが提案中だがまだ時間かかりそう

901 名前:デフォルトの名無しさん mailto:sage [2022/04/06(水) 23:18:21.83 ID:NvxWnsbd.net]
>>877 >>878
レスdクス
やっぱいろいろ一般化されたテンプレートがいっぱいあったら
テンプレートを特殊化せずに済む幅がひろがりんぐ、

902 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 03:17:05.89 ID:yw7pyl+g.net]
>>883
eigenは遅い
gmtlはメンテナンスされてない

>>884-885
一次元配列にマップしたときの並び方が柔軟であってほしいって書いてるでしょ
外部ライブラリ必須じゃないかな現状

>>886
mdspanは実体を持たなくてmdarrayは実態を持つんだっけ
C++23に入るって話じゃなかったっけ?
俺C++の新機能はそんなに熱心に追ってないけどこれだけは待望してる

>>880
ということで、現状はboostじゃないかな
これもメンテナンスされてないようだが、マシだと思う
良いライブラリがあったら俺も知りたい

903 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 03:34:21.33 ID:zyrTrwHF.net]
柔軟な多重配列なんて自分ですぐ作っておしまいな話なのに
なぜ標準にないとかライブラリがないと言い出したり将来の仕様に期待するとか意味不明

904 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 03:49:06.16 ID:g2f/LEmv.net]
numpyを使う。もちろん他にpython併用する理由があればだけど。
ローメジャーなのでメモリ上での向きは個別にやってる。

905 名前:デフォルトの名無しさん [2022/04/07(木) 05:59:06.00 ID:kMhdBz2h.net]
>>880
blas使いたいんならstd::sliceがモロそのものだよ

906 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 06:13:35.95 ID:yw7pyl+g.net]
>>889
やってから言えや
例えば、高速なランダムアクセスとか添字の組と要素番号の間の高速なマッピングとか、どう実装するつもりでいるの?

907 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 06:17:36.20 ID:OOyqDhdW.net]
あるクラスのコンストラクタがvector<int>をとるんだけど、たまにvector<size_t>を渡したいときがあるからオーバーロードするようにしたらambiguousだとエラーが出た

1) ambiguous にならない方法はありますか
2) vector<size_t>の各要素がintの範囲に収まるくらい小さいとき、これをvector<int>にキャストするナイスな書き方はありますか



908 名前:デフォルトの名無しさん [2022/04/07(木) 06:40:42.70 ID:kMhdBz2h.net]
ambigousにはならんようだが
https://ideone.com/YrFYsI

909 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 07:18:15.48 ID:3YRGB6r4.net]
>>892
自作すれば自分の使う方法に合わせてカスタマイズできるから圧倒的に有利
インデックシングも汎用だと毎回多段計算になるが自作なら用途に合わせて最適化できる

910 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 08:17:57.53 ID:CaxjwvsJ.net]
ファイルならまだしもオンメモリーで高速なランダムアクセスとか言語の範囲では工夫しようがなくね?

911 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 08:32:07.21 ID:Ym/mh0iz.net]
近傍のアクセスが速いというのは言語関係ないしな

912 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 10:27:53.88 ID:2nzlX6cZ.net]
そういえばSTLのコンテナに[]で範囲外アクセスしたとき、デバッグモードだとちゃんとアサート出してくれるけど
あれってSTL実装した人がそう書いたから出るの?それともOSの機能か何か?

913 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 10:32:39.68 ID:2HgVVA+6.net]
全てそう書いたから出るんだよ
OSはレイヤが違う話

914 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 10:39:14.99 ID:2nzlX6cZ.net]
へえ、じゃやっぱマクロ使ってガシガシ書いてるんだろうね
自分じゃ絶対やりたくないなw

915 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 17:34:09.66 ID:mHsgrYEE.net]
ifdefで括るだけだろ

916 名前:デフォルトの名無しさん [2022/04/07(木) 18:22:02.97 ID:kMhdBz2h.net]
>>898
ルール上、保証がないことでも
やってくれてることって、どこにでもあるだろ

operator[](size_t)で範囲外アクセスした場合の動作は未定義なので
どんな扱いをされても合法なんだよ

# 一時期流行った気持ち悪い喩えはもうしない

917 名前:デフォルトの名無しさん mailto:sage [2022/04/07(木) 21:49:18.59 ID:6+zrl0OG.net]
SNSの気持ち悪いノリ持ち込むなよ



918 名前:デフォルトの名無しさん mailto:sage [2022/04/08(金) 01:44:38.29 ID:jwLlCRWe.net]
>>900
お客様根性丸出しのプログラマとか・・・

919 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 13:06:11.18 ID:NDf9sYGT.net]
メモリが足らないから64ビットにするとかいうやつがいて
ソース見たら
double hoge[300][300][300];
って笑った

920 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 13:37:31.78 ID:gSPSOhuN.net]
64bit化だけじゃ無理でしょ
スタックサイズを512MBぐらいにしなきゃ

921 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 13:47:10.70 ID:a9m8EYfT.net]
ツッコミどころが違う…
32bitのままヒープに確保で十分だから

922 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 13:49:15.33 ID:jXZanj6A.net]
ヒープを使って良いのはアマチュアまでだからな

923 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 13:53:57.22 ID:qQptZxW8.net]
世の中マシン性能で解決おじさんみたいなのばっかり

924 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 14:20:15.81 ID:erlZKZM8.net]
>>907
それを言うなら32bitのままスタックサイズを増やすだけで充分だろ
ソース変更要らんし

925 名前:はちみつ餃子 mailto:sage [2022/04/09(土) 15:54:11.32 ID:LbeQCC1G.net]
デフォルトでのスタックサイズ上限がだいぶん小さめ (数メガバイト程度) になってるのは
基本的にそれで足りる、 なるべくそれで足りるように書けという暗黙の圧力だと思う。
必要に応じて柔軟に対処すりゃいいけど、最初からあえて逆らうべきでもないだろ。

なんでもかんでもスタックを使ってるとデバッガで追いづらいし、
流れを制御するための変数と処理する対象になるデータ (大抵はある程度に大きい) は分けたい。
回路設計に喩えると制御線と動力線を分けるみたいな感じ。
(わかりにくい比喩ですまんがあくまで感覚なのでこういう形でしか表現できない。)

926 名前:ハノン mailto:sage [2022/04/09(土) 16:35:28.22 ID:50hSXO1R.net]
>>911
>回路設計に喩えると制御線と動力線を分けるみたいな感じ。

昔、試作基盤として、天地にべったり Vcc とアースを上辺と下辺に貼り付けて、間に島(ランド)をたくさん並べるっていうのを聞いたことがあります
どういう名称だったか忘れちゃいましたが…

927 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 16:45:04.63 ID:erlZKZM8.net]
おれおれコーディングルールを開陳されても困る



928 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 18:42:32.24 ID:njPxFZn6.net]
>>906
笑ったって書いてあんじゃん
また、笑った

929 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 19:24:26.54 ID:mI1Pq9ZL.net]
300が何の数字か知らんけど、それが変更や拡張で800くらいになったら溢れるんだから
64bitが必要って判断はなくはないでしょ
何の数字か知らんけど

930 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 19:56:02.24 ID:NDf9sYGT.net]
>>915
君は本物のバカだな

931 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 21:01:35.50 ID:/RZJpXw8.net]
規格にスタックって出てくる?

932 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 22:53:29.39 ID:NDf9sYGT.net]
出てくるわけねーじゃん
バカですか?

933 名前:デフォルトの名無しさん mailto:sage [2022/04/09(土) 23:32:57.29 ID:lfgNvR7s.net]
std::threadで作ったスレッドのスタックサイズは1 MBで
変更はできないら
しい

今日日は仮想メモリがあるからなリ
ッチなマシンなら……

934 名前:デフォルトの名無しさん mailto:sage [2022/04/10(日) 01:07:52.01 ID:OW76vhVn.net]
標準ライブラリなんて普通使わないだろ
汎用的にしすぎてて、いらない機能が多いからやたらと遅いし

935 名前:デフォルトの名無しさん mailto:sage [2022/04/10(日) 01:48:34.97 ID:vpYyJyBE.net]
標準以外なにをつかうんだ

936 名前:デフォルトの名無しさん mailto:sage [2022/04/10(日) 04:47:34.93 ID:Fso6oKAR.net]
_beginthreadex()

937 名前:デフォルトの名無しさん mailto:sage [2022/04/10(日) 05:15:04.39 ID:RmTwSS8K.net]
pthread



938 名前:デフォルトの名無しさん [2022/04/10(日) 05:58:59.81 ID:xcZwEbFY.net]
<thread>で抽象化されていないOS特有の機能を使いたきゃAPI使うってだけ

939 名前:デフォルトの名無しさん mailto:sage [2022/04/10(日) 11:29:27.51 ID:lpHEMRFm.net]
>>921
大抵は自社でフレームワーク構築してるよ
iostreamですら、includeしたプルリク蹴らられるし

940 名前:デフォルトの名無しさん mailto:sage [2022/04/10(日) 11:37:41.44 ID:vpYyJyBE.net]
>>925
被せるだけじゃなくて自作すんの?

941 名前:デフォルトの名無しさん mailto:sage [2022/04/10(日) 11:57:59.43 ID:Np98oj9K.net]
ちんちんシュッ!シュッ!シュッ!

942 名前:デフォルトの名無しさん mailto:sage [2022/04/10(日) 13:14:21.25 ID:wqaUV7TG.net]
>>921
OSのAPI直で叩けってことやろ
例えばCreateThreadならスタックサイズ指定できるし

943 名前:デフォルトの名無しさん mailto:sage [2022/04/10(日) 16:50:49.57 ID:8UzTPUX4.net]
>>925
うちもstringとかコンテナクラスは全部自作してる
昔はプラットフォームがUNIXもあったりして、環境によってはSTL使うと
コンパイルエラーになってたからな

944 名前:デフォルトの名無しさん mailto:sage [2022/04/11(月) 06:43:40.41 ID:x3kzaSAd.net]
関数群をまとめたいときってクラスで切るべき? 名前空間で切るべき?
例えば sub1、 sub2 というサブルーチンがあって、これらが func1、func2 から呼ばれるときに、これらをまとめたいと思うんです

945 名前:デフォルトの名無しさん [2022/04/11(月) 06:51:36.36 ID:r64ZejsB.net]
べきという言い方はあまり好まんが

関数間で連携させるならクラス
連携しない単なるグループなら名前空間
というのが俺がよく使う手だ

946 名前:デフォルトの名無しさん mailto:sage [2022/04/11(月) 06:54:00.91 ID:sjzgKw67.net]
> これらをまとめたいと思うんです
どうまとめたいんだよ…

947 名前:デフォルトの名無しさん mailto:sage [2022/04/11(月) 12:12:27.70 ID:sxIacEU4.net]
mc++d読んだけど、これが20年前以上に書かれたってことがすごいな
今となっては、当たり前のことをばっかだけど
当時は革新的だったんじゃないかな



948 名前:はちみつ餃子 mailto:sage [2022/04/11(月) 13:01:51.57 ID:7nQKgh0L.net]
>>930
特定の範囲でしか使わない関数があるという意味?
それだけの理由なら名前空間でもクラスでも分ける必要はない。
その翻訳単位で内部リンケージにしておけば十分だよ。

名前空間やクラスは外部に対してどう見せるかの問題なんだから
機能単位の中で階層を分ける必要はあんまりない。

949 名前:デフォルトの名無しさん mailto:sage [2022/04/11(月) 15:33:36.87 ID:gXppguDy.net]
そういや翻訳単位の管理として新しくモジュールがc++20から導入されたけど、使い心地どうかしらん?
既存コードもモジュール化した方がいいくらい便利だったりするのかしらん?

950 名前:デフォルトの名無しさん mailto:sage [2022/04/11(月) 16:44:48 ID:bKclHLZw.net]
>>930 >>934
staticおにいさん「class外、*.cppにstatic修飾して書く」

951 名前:デフォルトの名無しさん mailto:sage [2022/04/11(月) 19:36:19.35 ID:KtON6/oU.net]
>>935
昨年末あたりにvisual studioで試したらどうやってもビルド通らなくて諦めたけど今もう使えるようになってるんかな

952 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 01:31:53 ID:EgjH8LRN.net]
実験した程度でしかないけど使えてたよ。

953 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 10:13:21.46 ID:5vVn8Fqf.net]
>>934
その翻訳単位がグローバル領域だったら? って意味でしょ

954 名前:はちみつ餃子 mailto:sage [2022/04/12(火) 11:04:00.65 ID:5njWaFr4.net]
>>939
言いたいことがわからない。

955 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 16:43:20.82 ID:qoqTD/fb.net]
dfs とか bfs みたいな名前の関数はそれを呼ぶ関数とまとめたくなるよね分かる
関数内関数にすると他の関数から呼べなくなるしな

名前を変えよってのはナシなw

956 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 17:25:13.49 ID:nzV1CUkS.net]
モジュール……

957 名前:デフォルトの名無しさん [2022/04/12(火) 17:51:32.45 ID:RKLCiqJK.net]
アホな質問かもしれないのですが……
今までユニークポインタで実体領域確保していたクラスを、どうせ一つしかnewしないからと、クラス内部に自身型の静的変数を保持して使用する方法へと変更しました。
所謂シングルトンに似た感じのものだと思うのですが。

std::unique-ptr<Hoge>Temp=std::make-unique<Hoge>();

static Hoge& GetInstance(){static Hoge temp;return temp;}

使用する分には問題ないのですが、実体化させたいクラス数が多く、結果的には静的変数のガズが増え、実体がグローバルに多数存在する状態になってしまっていると思います。
この場合、名前衝突以外に何か想定される不具合はありますか?
データを保持させるクラス以外は全てこれに置き換えようと思っているのですが、今までnewして使っていたため何か罠があると思えてなりません。
この方法はクラス名から実態を呼び出せて私に大変便利です。



958 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 18:22:24.95 ID:fdFUG1QI.net]
>>943
ないです

959 名前:蟻人間 mailto:sage [2022/04/12(火) 18:27:41.73 ID:Dt0TGPDO.net]
>>943
マルチスレッドじゃないよな

960 名前:デフォルトの名無しさん [2022/04/12(火) 18:29:33.15 ID:RKLCiqJK.net]
>>944
ありがとうございます!
>>945
違います!

無さそうで安心でした

961 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 18:39:03.10 ID:FTlcB8DO.net]
クラス外側でtemplate実装にしろよとは思うが

template<class T>
inline T Instance;

int main(){
Instance<Hoge>.Execute();
}

962 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 19:21:11.76 ID:72/2frZ9.net]
static ローカル変数が定石じゃないの?

963 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 20:27:31.77 ID:vgUv52EM.net]
は?

964 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 20:30:19.09 ID:X1V1J1VK.net]
経験的にはどうせ静的なら変に隠さずグローバル変数の方が使いやすいです

965 名前:デフォルトの名無しさん [2022/04/12(火) 21:36:16.25 ID:RKLCiqJK.net]
ちょっと皆さんの言ってることがよくわからないのですが……
テンプレートにして有効範囲で使用する、グローバルでいつでも呼び出せるようにする
ということでしょうか?
使用を想定しているのは膨大なデータのコンプレックスではなく、外部データ加工用に少量のローカル変数を持たせたクラスなので、実体はひつとで大丈夫だと思います。
その際には、衝突を考えないならば、グローバウに無造作に置いた方が使いやすいよ、ということでしょうか?

966 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 22:13:59.90 ID:oNokQpOT.net]
左再帰が無限ループになる理由を教えて

967 名前:蟻人間 mailto:sage [2022/04/12(火) 23:03:12.33 ID:Dt0TGPDO.net]
>>952
実引数と戻り先アドレスをスタックに繰り返し積むから。



968 名前:蟻人間 mailto:sage [2022/04/12(火) 23:31 ]
[ここ壊れてます]

969 名前::14.39 ID:Dt0TGPDO.net mailto: 積んで解放しないから。 []
[ここ壊れてます]

970 名前:デフォルトの名無しさん mailto:sage [2022/04/12(火) 23:39:21.85 ID:EarvAF13.net]
停止しないから無限ループする
…って酷い理由だな

971 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 00:21:12.99 ID:bubjF7cO.net]
じゃあ停止するかどうかを判定する汎用ルーチンHを作ればいいんだよ。

972 名前:947 mailto:sage [2022/04/13(水) 01:25:51.41 ID:qfz8Xp88.net]
>>951
シングルトンを確保しておくためだけにstatic関数が10も20も並ぶのがアホくさいじゃん?
template 1つだけ書いておこうよって意図で書いた。

が、>>951 のように一時変数として使うならローカル変数にして使い捨てるべき。

グローバル変数(>>943 もやってることは同じ)を使うデメリットは調べればすぐ出てくる

973 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 05:51:58.22 ID:8pcHyiAe.net]
staticにインスタンス入れるやり方だとマルチスレッドマルチプロセスにした時すぐ破綻するから大き目の定数入れる以外には使ってないな

974 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 08:11:33 ID:ZQqXT36F.net]
グローバル変数は初期化順序が環境依存になる問題があるから、
呼び出し順序で初期化するインライン関数のstaticローカル変数の方が扱いやすい
という話があったかと思うけど、最近は回避するテクニックできたの?

975 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 09:44:11 ID:abmOAw0D.net]
>>959
それでも競合は起きうるよね
排他制御は必須

976 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 10:25:01.35 ID:2DJG1h+b.net]
相談
抽象的なノードクラスがあり、上流ノードから下流ノードが接続され情報を取り出したいとする
この時、接続時に上流ノードの出力タイプと、下流ノードの入力タイプが符合するかどうかを調べたい
今考えている実装方法としてenum型でタイプを列挙しておき、ノードの出力属性としてもたせ
入力に必要な属性を接続時に調べておく方法
シンプルでベストかなとは思うが、タイプが増えていくとその管理がやや大変かと思う
文字列で符合させるやり方も考えたが、例えば"int"と"integer"とかでごちゃごちゃしそう
なにか妙案があればお聞かせ願いたい

977 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 10:28:21.90 ID:CyvaZh5F.net]
抽象的でわからん



978 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 10:36:53.86 ID:2DJG1h+b.net]
すいません、もうちょっと自分で考えて相談点まとめます

979 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 10:44:17.47 ID:zii+x7Ds.net]
それぞれのスレッドでは個別だけど スレッド内では唯一のインスタンス
スレッドをまたいでも共通で唯一のインスタンス
あたまがこんらんする

980 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 12:06:05.65 ID:IuPW2iUE.net]
>>961
どのみち符号の管理・徹底は必須だから、文字列で符号化し、表とかにまとめてバージョン管理・周知徹底する。

protocol bufferとかでインターフェイス管理すれば少しは楽かね。
protocol buffer以外だとなにがいいかしらん?

981 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 12:12:18.93 ID:5KnL277L.net]
// A と Bのところだけが異なるfとf2
// うまくこの関数をまとめれませんか?

#include <iostream>
#include <vector>
#include <algorithm>

struct Foo
{
void Func() const
{}
};

void f(const std::vector<Foo>& vf)
{
std::for_each(vf.begin(),vf.end(),
[](auto&& f)
{
f.Func();//A
}
);
}

void f2(const std::vector<Foo*>& vf)
{
std::for_each(vf.begin(),vf.end(),
[](auto&& f)
{
f->Func();//B
}
);
}

int main( int argc, char *argv[] )
{
std::vector<Foo> vf;
std::vector<Foo*> vfp;

 f(vf);
 f2(vfp);
}

982 名前:蟻人間 mailto:sage [2022/04/13(水) 12:20:05.74 ID:+YltrYoo.net]
std::vector<Foo*>
std::vector<Foo>
のインターフェイスに共通部分がない。アキラメロン。

983 名前:947 mailto:sage [2022/04/13(水) 13:02:01 ID:sgl3F80B.net]
type_traitsで殴ればいけそう

template<class T>
auto& to_reference_if_pointer(T&t){
if constexpr(std::is_pointer_v<T>){
return *t;
}else{
return t;
}
}


to_reference_if_pointer(f).Func();

984 名前:はちみつ餃子 mailto:sage [2022/04/13(水) 13:12:01.75 ID:qCcEdGhE.net]
>>965
https://kaitai.io/

985 名前:デフォルトの名無しさん [2022/04/13(水) 18:00:26 ID:m7JtDTD6.net]
>>957
今実機で確認して、インライン化したテンプレートをヘッダーに咥える方法が自分にとって良い事を確認しました!
ありがとうございます。
いちいちスタティック咥えるより良いと思います。

マルチスレッドは使用したことがないのでわかりませんが、なるべき勉強してみたいと思います。

皆さんありがとうございます!

986 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 18:15:56.73 ID:I4ieD//T.net]
>>966
std::for_each(vf.begin(),vf.end(),std::mem_fn(&Foo::Func));
または
for (auto &&x : vf) { std::invoke(&Foo::Func, x); }

987 名前:デフォルトの名無しさん [2022/04/13(水) 18:28:24 ID:U0E88zpG.net]
オマンコハンター チンポマン!
股間の銃を携えて今日もおまんこ狙い撃ち



988 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 23:40:49.30 ID:grUsXYkY.net]
>>971
ラムダが消されてて笑った

989 名前:デフォルトの名無しさん mailto:sage [2022/04/13(水) 23:53:02.59 ID:nvVh9cdQ.net]
>>967

スキル低っ

990 名前:デフォルトの名無しさん mailto:sage [2022/04/14(木) 07:29:49.75 ID:Qd4x1CZh.net]
シングルトンは要らない子、とヴァカにしていたが
グローバルなオブジェクトのコンストラの呼び出し順序が翻訳単位を超えた呼び出し順序がまるきり不
定になるというC/C++の仕様を回避するのには有効おと1 mgぐらい考えを新ためた
OSのwrapperを書いて、main()でそれを初期化することにして
グローバルなオブジェクトのコンストラから思わずOSのwrapper経由でログを吐かせようとしたらクラッシュして気づいたから
最初のOSのwrapperの最初の呼び出しでまだ未呼び出しなら初期化したら良い(ビコーン  ← まんまシングルトン

main()で初期化することが保証しているから、グローバルなコンストラの中でいきなりスレッドを起こしてそこから
OSのwrapperを呼ぶ、みたいなktgi行為が無い限りこのシングルトンはマルチスレッドの対策が不要
 

991 名前:デフォルトの名無しさん mailto:sage [2022/04/14(木) 07:33:43.77 ID:Qd4x1CZh.net]
訂正orz、
誤: 最初のOSのwrapperの最初の呼び出しでまだ未呼び出しなら初期化したら良い(ビコーン  ← まんまシングルトン
正: 最初のOSのwrapperの最初の呼び出しでまだ未初期化なら初期化したら良い(ビコーン  ← まんまシングルトン

992 名前:デフォルトの名無しさん mailto:sage [2022/04/14(木) 08:28:49 ID:79II+WyL.net]
別にシングルトンじゃなくても単に起動時に初期化して渡せばええやん

993 名前:デフォルトの名無しさん mailto:sage [2022/04/14(木) 09:59:18.13 ID:wwxSZsaE.net]
いや要るでしょシングルトン
何らかのリソースマネージャ作るときとか避けて通れないし

994 名前:デフォルトの名無しさん mailto:sage [2022/04/14(木) 10:35:30.42 ID:dlHUY+WK.net]
>>977
初期化順序の問題って回避できたっけ?

995 名前:デフォルトの名無しさん mailto:sage [2022/04/14(木) 10:40:07.14 ID:79II+WyL.net]
mainでリソース用意しろという話よ
ライブラリだったら初期化用になんか叩いてもらえ

996 名前:デフォルトの名無しさん mailto:sage [2022/04/14(木) 10:47:06 ID:rsrkTEkU.net]
グローバル変数をポインタにしておいてmainでnewとか
friend int main(int, char**); とか?

997 名前:デフォルトの名無しさん mailto:sage [2022/04/14(木) 10:56:36 ID:79II+WyL.net]
なんでグローバル変数にこだわるんだよ



998 名前:デフォルトの名無しさん mailto:sage [2022/04/14(木) 10:58:53 ID:dlHUY+WK.net]
>>980
シングルトンより制限多くてメリット感じないなぁ。
マキャベリスト対策は難しいかもしれないけど、マーフィーに呪われないように運用で回避するのは最後の手段にすべき。

999 名前:デフォルトの名無しさん mailto:sage [2022/04/14(木) 15:09:30.09 ID:4tVKG4Xu.net]
1個でもグローバルなりがあると
エントリポイントの main よりも前に走るコンストラクタ内部であれこれされる可能性を想定する必要に迫られる と

1000 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 00:01:53.91 ID:he9C7sX7.net]
>>981
> グローバル変数をポインタにしておいてmainでnewとか
> friend int main(int, char**); とか?
それは最初にやったがブ

1001 名前:ツがOSのwrapperなのでカッコワルダサいと思い考え直した
結果がマルチスレッド対応を含まないライトなシングルトンの適用

>>980
main()に入ってから初期化するというだけでは初期化が間に合わないケースがあるから何とかしたいという話
[]
[ここ壊れてます]

1002 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 00:06:58.93 ID:xDiQzMrD.net]
mainの実行より前に意味があることしようと思ったらコンパイル時しかなかろうよ

1003 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 00:13:00.39 ID:he9C7sX7.net]
>>986の主観の話をしているのではない件について:

1004 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 00:22:10.66 ID:xDiQzMrD.net]
>>987
お前のグローバル変数愛は主観じゃないんかいな
もっと崇高な何かがあるのか

1005 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 04:08:04.71 ID:sm6VHVYM.net]
静的ストレージは実装と心中するプログラム以外マジでやめといたほうがいい
移植性が大幅に低下する

1006 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 04:23:41.78 ID:1Y3hD0GJ.net]
グローバルやstaticな変数を使用する時は排他制御を必ず行なう
これを厳守していれば使っても大丈夫です
もちろん使わずに済む別の方法がある時は別の方法を取るべきです

1007 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 06:36:24.15 ID:he9C7sX7.net]
>>988
・任意のユーザーが任意のクラスをグローバル変数として使うことをOSが禁止するわけにはいかない
・クラスのコンストラクタでOS資源を確保することは普通(イベントオブジェクトを確保する等、ハンドルのメンバを有効な値で初期化しようとする
・誰かがグローバル変数のコンストラクタでOSの資源を確保しようとしたら、この場合初期化前のOSのwrapperが呼ばれる
ここまで書かないと>>986がいかにたわごとを言っているかわからないわけ?!

>>990
>グローバルやstaticな変数を使用する時は排他制御を必ず行なう
まあそれはそう。今回排他制御を避けられるのは
>main()で初期化することが保証しているから、グローバルなコンストラの中でいきなりスレッドを起こしてそこから
>OSのwrapperを呼ぶ、みたいなktgi行為が無い限りこのシングルトンはマルチスレッドの対策が不要
というktgi行為が無いことの条件付き。



1008 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 07:35:15 ID:xDiQzMrD.net]
>>991
えっと、つまり、使えるものは使わずにはおれない一族に生まれたということですか?

1009 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 08:15:20.73 ID:xhqbcuaF.net]
>>991
c++11から静的ローカル変数の初期化は自動的に排他制御され、スレッドセーフとなる[10]。 だって。
シングルトンパターンの何を問題視しているんだっけ?

1010 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 08:29:52.88 ID:y04/Kx9U.net]
自分で記述するだけならどうとでもなるけど
他人に使ってもらう前提だと
限度はあるにしても色々防護策を講じたくなるのもわかる

1011 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 08:31:14.00 ID:xDiQzMrD.net]
モジュールの結合度を評価するのにまず排他がどうとか気にするもんかね?

1012 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 08:40:46.42 ID:WMzvufu2.net]
C++相談室 part160
https://mevius.5ch.net/test/read.cgi/tech/1649979572/

1013 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 08:43:44.23 ID:ZcCJtqdn.net]
>>995
それとは独立の問題
並行&並列でも動くことが現代では求められているため
一般的にグローバルやstatic変数の読み書きには排他制御が必ず必要となる
厳密な意味で変数ではなく一度限り初期化される定数のようなものの場合はその初期化が排他制御される保証のみでも大丈夫なだけ

1014 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 08:44:18.42 ID:wykOop5a.net]
>>994
シングルトンパターンならコンストラクタをプライベートにするんだから、そもそもグローバル変数として初期化できないんじゃない?

1015 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 08:44:58.60 ID:wykOop5a.net]
>>997
>>993

1016 名前:デフォルトの名無しさん mailto:sage [2022/04/15(金) 08:49:06.65 ID:xDiQzMrD.net]
>>997
グローバル変数批判でまずそれが問題だと思うのはどうかしてるよ

1017 名前:1001 [Over 1000 Thread.net]
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 54日 20時間 52分 24秒



1018 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<255KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef