22/03/01 07:02:46.96 qblu1Z+O.net
>>350
おまえさん本当にC++使いか?
operator+とoperator+=みたいのの全組み合わせがマクロ使わずにできないとでも思うのか?
358:はちみつ餃子
22/03/01 08:36:21.07 9lt8ULa+.net
>>340
Cプリプロセッサを他言語で使ってもいいんですよ。
359:デフォルトの名無しさん
22/03/01 09:06:42.29 cUOzOJ3p.net
>>340
マクロを持つ言語は多い
Rustのように用途に応じてマクロが何種類もあるケースもある
360:デフォルトの名無しさん
22/03/01 10:19:23.90 Hv9eImco.net
struct B{...}*bP;
struct D1 : public B{...} d1;
struct D2 : public B{...} d2;
bP = (...)? &d1 : &d2;
これって駄目なんですね
361:デフォルトの名無しさん
22/03/01 10:40:29.97 MQDieCXt.net
>>355
3項演算子の引数型が互換性のないD1*,D2*だからね
C#9あたりがターゲット型から3項演算子の型推測やってた気がするがC++に導入される日か来るんだろうか
362:デフォルトの名無しさん
22/03/01 11:01:53.10 Hv9eImco.net
なるほど
素直にif文にしておきます
363:デフォルトの名無しさん
22/03/01 11:08:34.73 cMGuQY9h.net
つ static_cast<bP>(&d#)
364:デフォルトの名無しさん
22/03/01 11:13:51.24 qblu1Z+O.net
>>357
bP = (rnd() & 1)? (B*)&d1 : (B*)&d2;
ではあかんのか?
365:デフォルトの名無しさん
22/03/01 11:14:23.15 qblu1Z+O.net
rnd() & 1
は無視してくれw
366:デフォルトの名無しさん
22/03/01 11:14:50.30 Hv9eImco.net
ああ、それでいいんですね
ありがとうございます
367:デフォルトの名無しさん
22/03/01 11:54:42.57 MT73K7Vw.net
今度はCに毒されていくC++スレw
プリプロセッサはincludeパス的に言語や標準ライブラリを結構意識したりしますw
368:デフォルトの名無しさん
22/03/01 23:30:51.45 cUOzOJ3p.net
>>355
そういうのはRustがすっきり実現していていい感じ
静的モノモーフィングでコンパイル時に解決させる方法と
動的ディスパッチで実行時に解決させる方法の2種類を選びつつ簡単かつ安全に記述できる
369:デフォルトの名無しさん
22/03/02 01:32:22.77 /wwlA8Tq.net
なんでこんなとこにrust信者が湧いてるん?
370:デフォルトの名無しさん
22/03/02 03:41:00.25 re9dUtRi.net
C++のstatic_castで十分すっきりしてるし安全なんだがw
371:デフォルトの名無しさん
22/03/02 03:51:26.38 S8+3WyDZ.net
うむ
まあRustはトレイトを導入しているためもっとフレキシブルに機能毎に事実上のキャストができる点で先に進んでる感じ
372:デフォルトの名無しさん
22/03/02 04:16:03.37 re9dUtRi.net
std::visitで十分じゃないの?
373:デフォルトの名無しさん
22/03/02 06:05:07.28 +cCq037X.net
>>364
メンタルはルビ基地と同じだから相手すんな
374:デフォルトの名無しさん
22/03/02 08:02:10.51 UQPkqsb3.net
>>364
スレ違い野郎はNG推奨
375:デフォルトの名無しさん
22/03/02 10:15:53.71 KGds3ROy.net
RustはUnityで作られてるんだからC#スレ行けよ
376:デフォルトの名無しさん
22/03/03 11:52:56.52 YmcISO0J.net
有名なライブラリのコード覗いて見るとC++でもマクロ結構使ってるよね
377:デフォルトの名無しさん
22/03/03 12:21:01.59 aVzPtAzs.net
まあそこは女性のウェストが50cmだと思ってるスペック厨のオタクと現実に生きて実用的なものを開発してる人の違いだね
378:デフォルトの名無しさん
22/03/03 12:24:43.91 adLRB/+A.net
有名ライブラリこそマクロに頼らないとやってられんとこあるからな
コンパイル環境(gcc/clang/MSVC)のスイッチとか
C++バージョンのスイッチとか(#define CONSTEVAL20 consteval/constexpr)
ボイラープレートの簡略化はどれぐらいやってるかは知らんが
379:デフォルトの名無しさん
22/03/03 15:14:53.11 dDnSjvDO.net
条件コンパイルには#ifdefがいるね
380:デフォルトの名無しさん
22/03/03 16:48:19.79 PsZF8bq4.net
文法ばかり勉強してコード書かないからマクロの必要性が見えないんだよ。
381:デフォルトの名無しさん
22/03/03 18:39:02.62 c7Jb1Y/C.net
ああ、マクロ不要論者は自分でライブラリ書いたことないというオチか
腑に落ちたわ
382:デフォルトの名無しさん
22/03/03 19:24:38.63 hTxF5AaQ.net
まともにコード書く量も質も足りない人にはマクロの弊害を認識できてないんだろうなw
インクルードガードなどの条件コンパイルはプリプロセスではあるものの、一般的なマクロ置換処理ではないw
383:デフォルトの名無しさん
22/03/03 19:49:49.09 l1hFvrU8.net
本気でいってんの?このバカ
384:デフォルトの名無しさん
22/03/03 20:05:07.59 hTxF5AaQ.net
単発IDで中身のない煽りだけの人が早速出現w
臆病すぎwwww
385:デフォルトの名無しさん
22/03/04 05:56:44.52 1RB3fRbG.net
> マクロ不要論者
誰? いたっけ、そんなやつ
386:デフォルトの名無しさん
22/03/04 06:37:36.91 DqQFNqIa.net
>>380
>>336あたりじゃね?
387:デフォルトの名無しさん
22/03/04 06:43:28.40 1RB3fRbG.net
ああ、あのキチか
相手すると馬鹿が伝染るからやめようぜ
388:デフォルトの名無しさん
22/03/04 11:43:03.93 4zB49VIz.net
まだいたのか臆病者w 答え教えてもらってもなお理解しない人に付ける薬はないよw
構ってちゃんやるなら別の板でやれ
389:デフォルトの名無しさん
22/03/04 20:47:43.90 TVZZL9aI.net
コンパイル時にansiをunicodeに変換する簡単な方法あってある?
具体的にはmagic_enum::enum_namesで返ってくるstring_view配列をwchar_tとして貰いたいのだけど
390:デフォルトの名無しさん
22/03/04 20:55:24.70 4zB49VIz.net
exe野郎は口を開く権利なしw
ソースコードのエンコーディングを指定するか、エスケープした文字列まで正しく変換したソースを使った上で、必要なキャストをするか、プロジェクト設定を使えw
391:デフォルトの名無しさん
22/03/04 20:58:03.36 nHKPE6Wj.net
MSの教えどおりにマクロ使ってれば簡単なのにな。
392:デフォルトの名無しさん
22/03/04 21:17:57.65 4zB49VIz.net
そもそも言ってる内容が怪しいw ワイド文字の話とエンコーディングの話がごっちゃになってるw
393:デフォルトの名無しさん
22/03/04 21:40:05.34 TVZZL9aI.net
ansiをunicodeにエンコードしたいって意味なんだけど自分でテーブルでもつくらないとconstevalには無理?
それ以外に方法がないならライブラリいじることにするけど
394:デフォルトの名無しさん
22/03/04 21:47:53.46 4zB49VIz.net
動くサンプルを載せてみろw
395:デフォルトの名無しさん
22/03/04 21:55:46.03 cJZvpdpU.net
ansiってなにを指すん?
396:デフォルトの名無しさん
22/03/04 21:56:54.08 1RB3fRbG.net
アメリカの国内規格
397:デフォルトの名無しさん
22/03/04 22:00:02.02 4zB49VIz.net
MS様のお庭ではローカルコードページくらいの意味だw
398:デフォルトの名無しさん
22/03/04 22:05:54.66 TVZZL9aI.net
>>390
日本語WindowsMSVCだと"あ"はansi(shift-jis)として{ 0x82, 0xA0 }になる
これをunicodeの0x3042にエンコードするって感じでconstexprに生成されたansiを変換していきたい
ライブラリ内部では__FUNCSIG__等を利用して静的にenumから文字を生成してるからL#でもして端からunicodeを生成すれば良いんだけどその場合は他にも色々と変えないとダメだからそれは最終手段にしたい
399:デフォルトの名無しさん
22/03/04 22:07:55.03 4zB49VIz.net
>>393
ごたくはいいから動くサンプルを載せてみろw
400:デフォルトの名無しさん
22/03/04 22:12:15.56 TVZZL9aI.net
>>394
動くサンプルって何?
動く見通しついてないからこうして質問してるんだけどとりあえずansi版でもいいからサンプル見たいってことか?
enum class AIUEO { あ, い, う, え, お };
void print(){
constexpr auto texts = constexpr auto texts = magic_enum::enum_nameptrs<AIUEO>();
for (auto& str : texts) puts(str.data()); //ほんとはここを_putws的なunicodeを受け取るものに投げたい
}
401:デフォルトの名無しさん
22/03/04 22:14:02.23 TVZZL9aI.net
今即席でスマホのブラウザで書いたからconstexpr auto texts = constexpr auto texts = のところミスってるけどスルーしといて
402:デフォルトの名無しさん
22/03/04 22:14:34.14 4zB49VIz.net
main関数がないので動かんな
magic_enumもないので動かんな
これがお前の「動く」サンプルなのか???w
403:デフォルトの名無しさん
22/03/04 22:16:37.08 aciaBeWI.net
出たよサンプルないと何もできないおじさん
404:蟻人間
22/03/04 22:33:11.96 08B25WN2.net
URLリンク(qiita.com)
貼っとくよ。
405:デフォルトの名無しさん
22/03/04 22:42:39.88 rsYyHWe+.net
constexpr std::string s="test";
constexpr std::wstring ws=L"test";
こいつらが通らない時点で俺は諦めた
最終的にほしい型はstd::wstring_viewだろうけど
std::array<wchar_t, size>ならなんとかなるかもしれん
406:デフォルトの名無しさん
22/03/04 22:52:27.11 nHKPE6Wj.net
そもそもウクライナに寄付しろとか言う前に他民族、多言語に対応しろとmagic_e
407:num作者にメールすべき。
408:デフォルトの名無しさん
22/03/04 22:57:11.67 4zB49VIz.net
違うだろw こいつが動かせてないだけだろwwww
409:デフォルトの名無しさん
22/03/04 23:05:31.04 TVZZL9aI.net
>>399
まさにnameofと同じ作者のものだけど、やっぱ__FUNCSIG__の部分からLつけていくしかなさそうだな
410:デフォルトの名無しさん
22/03/05 00:24:50.51 AqnMHu7I.net
まだ動かせないんかいw
411:蟻人間
22/03/05 00:27:03.13 z+1i+qt8.net
L##
412:デフォルトの名無しさん
22/03/05 00:45:32.11 E2o+9AFP.net
C##
413:デフォルトの名無しさん
22/03/05 01:02:31.13 AqnMHu7I.net
一応言っておくと__FUNCSIG__はリテラルじゃなくてシンボルだぞw
>type hoge.cpp
hoge(__FUNCSIG__);
>cl /P /std:c++17 hoge.cpp
Microsoft(R) C/C++ Optimizing Compiler Version 19.28.29912 for x86
Copyright (C) Microsoft Corporation. All rights reserved.
hoge.cpp
>type hoge.i
#line 1 "hoge.cpp"
hoge(__FUNCSIG__);
>
なんというか...ロクに動かせもしないアホが一足飛びに余計なことして普通なら瞬間に出来ることを他人様に何度も何度も聞いて回るというねw
414:デフォルトの名無しさん
22/03/05 01:13:20.54 rFZZ/Cia.net
>>407
>__FUNCSIG__ 外側の関数のシグネチャを含む文字列リテラルとして定義されます。
直接Lは付けられないが#define L(x) L##xを使えばちゃんとワイド文字リテラルとなる
ついでに言っておくとVSのこの手のマクロはANSIではなくUTF8だったと思うぞ(固定ではなくソースコードの文字コード依存の可能性あり)
415:デフォルトの名無しさん
22/03/05 01:23:21.22 AqnMHu7I.net
utf8は正解なんだが、リテラルは不正解w
URLリンク(godbolt.org)
コンパイラがリテラルに置き換えるわけだけど、プリプロセッサではシンボルのままなので置換されると分からなくなるw
416:デフォルトの名無しさん
22/03/05 01:25:23.87 AZBfqXsc.net
MSVCの場合 /execution-charset で指定した文字コード(デフォルトはsjis=cp932)になるんじゃなかったかな
417:デフォルトの名無しさん
22/03/05 01:37:21.06 AqnMHu7I.net
未
418:指定時はソースと同じらしい https://docs.microsoft.com/ja-jp/cpp/build/reference/execution-charset-set-execution-character-set?view=msvc-170 でutf-8になってたようだな
419:デフォルトの名無しさん
22/03/05 01:47:40.22 AqnMHu7I.net
ただし、__FUNCSIG__はそういうのに影響されずutf-8っぽい
普通のリテラルはちゃんとシフトJISで出るけど、__FUNCSIG__はutf8だな
420:デフォルトの名無しさん
22/03/05 01:49:42.38 AZBfqXsc.net
ややこしいな、そういうのが一番困るんだよねw
421:デフォルトの名無しさん
22/03/05 01:52:53.77 AqnMHu7I.net
MSにありがちw ただシンボルに日本語とかキチガイしかしないからw
422:デフォルトの名無しさん
22/03/07 06:57:02.25 RhJCMKRm.net
>>414
だって規格で認めてるじゃん
ISO/IEC 14882:2020(E)
12.8 User-defined literals [over.literal]
8 [Example 1:
template <char...> double operator "" _\u03C0(); // OK: UCN for lowercase pi
423:デフォルトの名無しさん
22/03/07 07:14:15.82 2Lq6XwwP.net
引用が仕様ですらないし、引用元もないし、、、挙げ句内容的に__FUNCSIG__はシグニチャ付きの関数名がリテラルとして入るだけだぞw
その関数名に日本語使うのキチガイだけだろw
リテラル調べてどうするんだよw
424:デフォルトの名無しさん
22/03/07 07:41:36.14 RhJCMKRm.net
関数名の一部ってことわかんない?
425:デフォルトの名無しさん
22/03/07 12:31:32.96 2Lq6XwwP.net
君に何かを理解してもらうのは諦めるよ
俺の力では無理
426:デフォルトの名無しさん
22/03/07 12:38:21.73 RhJCMKRm.net
捨て台詞にしてももうちっとくらいマシなこと言えねえの?
427:デフォルトの名無しさん
22/03/07 20:42:37.07 padO6mVy.net
>>395
初心者だけどこれってプログラム内の変数名や関数名に日本語を出したいってこと?
あ = 3;
みたいな
428:デフォルトの名無しさん
22/03/07 21:21:28.85 yDdB4j8G.net
規格上はもうUnicodeの文字はだいたい使えるぞ
移植性やコーディングスタイルや常識の観点での良し悪しは別にして
429:デフォルトの名無しさん
22/03/07 21:29:08.28 ivurCOzA.net
>>420
俺抜きでレスバしてて恐縮だが
enum class AIUEO { あ, い, う, え, お };
const wchar_t* aiueo[] = { L"あ", L"い", L"う", L"え", L"お" };
enumに合わせてこんな感じで文字列も欲しいってこと
utf8からutf16へのエンコードは割と簡単に実装出来るという事が判明して、200行くらいかかったけどconstevalなu8_to_u16関数作ってmagic_enum::detail::n部分からwide版作っていくことで解決できた
430:デフォルトの名無しさん
22/03/07 21:34:05.04 yDdB4j8G.net
ええやんプルリクしといてよ
431:デフォルトの名無しさん
22/03/07 21:39:53.01 ivurCOzA.net
いいけど既に同じようなissue出してる人いて「constexprに文字列返されるので別の形にしたいならそっちで自由にやって」みたいな感じだったからな
432:デフォルトの名無しさん
22/03/07 21:55:07.26 uQvWeikk.net
これだから白人は嫌なんだよね。
433:デフォルトの名無しさん
22/03/07 21:58:54.49 2Lq6XwwP.net
昔からキチガイがシンボルに日本語使ってたりしたし、規格仕様の該当項目も挙げてないのに可能というのはおかしく
またソースコードや出力設定が何かに依るのが正しい可能性だって普通にある
またutf8というかunicodeとそのエンコーディング形式は簡単な計算式で可換
200行あればvc++固有ならmagic_enumの使用機能全て載せられるし、そもそも不要
そもそも情報小出しな時点、puts使ったりしてる時点、vc++を好き好んで使ってる時点でもうね・・・
挙げ句説明なくても5分もあれば気づくことに何日かかってるのかって人のプルリクが通るわけないだろw
434:デフォルトの名無しさん
22/03/07 23:18:01.19 ivurCOzA.net
>>425
まぁ面倒だからってよりこのスレにもちらほらいるようにASCII文字だけを想定してて
それだけなら1文字づつキャストするだけで簡単に出来るだろうしusing string_view = std::string_viewの所を上書きできるようにしておくから自前でやってって感じだな
435:デフォルトの名無しさん
22/03/07 23:23:59.38 2Lq6XwwP.net
「ASCII文字だけを想定してて」wwwww
436:デフォルトの名無しさん
22/03/07 23:29:43.95 m7T5bZFc.net
マクロ騒動で脳が破壊されてしまった子がいるね
437:デフォルトの名無しさん
22/03/07 23:46:00.91 47rZ/1iq.net
SEXの時は動かずにマグロになってしまったようですね
やっぱりロボトミー手術してよかったですね
438:デフォルトの名無しさん
22/03/08 21:56:42.93 A5UfccGR.net
>>422
はえー解決したなら良かった
まだまだ勉強不足だから半分理解できなかったけどconstexprはstring_view型なら使えることは学んだ
439:デフォルトの名無しさん
22/03/08 22:58:13.81 2Ie6O3y5.net
はいはい、一人何役するのかねw
440:デフォルトの名無しさん
22/03/08 23:19:40.19 lL5N1LvC.net
>>432
我々ギフハブがいつも見ているぞ
441:デフォルトの名無しさん
22/03/10 18:10:06.68 USdHjBxA.net
テンプレートの可変長引数って一般的な実装だとスタックに積まれるの?
てことはあんまり大きいデータは渡せない?
442:デフォルトの名無しさん
22/03/10 18:17:21.80 6o5PvaaD.net
template-parameter-packは実行環境では普通の引数と全く同じだ
翻訳中の解釈でどんな「普通の引数」にするか判断してるだけ
443:デフォルトの名無しさん
22/03/10 21:39:59.02 xy5Q90JZ.net
template<class...T>void f(T...t){}
f(1,2,3,4); で実体化されるf<int,int,int,int>は、
void f(int,int,int,int){}
と同じ扱いをされる。
普通の関数と変わらんよ。
たぶん気にしてるのはこんな感じの再帰実装だろう
template<class First>auto sum(First first){return first;}
template<class First, class Second, class...Rest>
auto sum(First first, Second second, Rest...rest){
return first+sum(second, rest...);
}
sum(1,2,3,4,5,6,7,8,9);
最適化なしコンパイルだとクソ真面目に45*sizeof(int)と9段分のリターンアドレスとか諸々をスタックに積む
最適化ありコンパイルなら大体インライン展開されるからさほど大事にはならない
444:デフォルトの名無しさん
22/03/11 07:47:35.25 GmBPyzdt.net
#include <utility>
template<class First>auto sum(First first){return first;}
template<class First, class... Rest>
auto sum(First first, Rest... rest){
return first+sum(rest...);
}
template <class T, T... Seq>
auto sum_seq(std::integer_sequence<T, Seq...>) {
return sum(Seq...);
}
int main() {
return sum_seq(std::make_index_sequence<100>());
}
こんな感じになるよ
URLリンク(godbolt.org)
途中経過のテンプレートも全て関数実体として展開される
最適化すると、この例だと全部定数で計算されるけど
445:デフォルトの名無しさん
22/03/11 08:12:59.76 GmBPyzdt.net
流石にちょっと説明追加しておきます。
sum_seq(std::make_index_sequence<100>())の部分は
sum(0,1,2,3,...,97,98,99)と同じです。
sum(0,1,2,3,...,97,98,99)は
sum(0) + sum(1,2,3,...,97,98,99)で計算されます。第2項の
sum(1,2,3,...,97,98,99)は
sum(1) + sum(2,3,...,97,98,99)で計算されます。第2項の
sum(2,3,...,97,98,99)は
...
sum(98,99)は
sum(98) + sum(99)で計算されます。
つまりすごい再起的に呼び出してバカ正直に壮絶な計算をするため、スタック消費も大きいということ。
446:デフォルトの名無しさん
22/03/11 08:30:00.26 bj9xq9MP.net
おれおれtemplateの例ですね。
447:デフォルトの名無しさん
22/03/11 11:44:15.06 yxfxX1kD.net
普通はテンプレつかった可変引数でも、イニシャライザでforで回して足して終わりっしょ。
なぜ自分で再帰にして書くのやら。
448:デフォルトの名無しさん
22/03/11 12:14:25.50 GmBPyzdt.net
>>440
一般には可変長テンプレート引数の型が一律とは限らないので
449:デフォルトの名無しさん
22/03/11 12:45:09.09 FGXUCKCr.net
>>440
initializer_listは実行時の解釈なので
翻訳時に全てを解決できるテンプレートを使っていて
それが出てきてしまうと残念な気持ちになる
450:デフォルトの名無しさん
22/03/11 19:55:16.89 XC1WHC10.net
constexprでやればいいじゃん
451:デフォルトの名無しさん
22/03/11 19:58:15.85 bj9xq9MP.net
なんでもtemplateにしたい病なんですよ。プロジェクトで一番迷惑なタイプです。
おれおれtemplateは可読性、保守性が一気に落ちるので勘弁してください。
452:デフォルトの名無しさん
22/03/11 20:09:30.59 rOwnBpGX.net
読む方は溜まったもんじゃないが書くのも実行速度もなんだかんだテンプレートが一番早いんで…
453:デフォルトの名無しさん
22/03/11 21:26:30.13 FGXUCKCr.net
>>444
純コンパイラ方式の言語を使ってるのに
中間コードを使わにゃならんところが出てくると
残念な気持ちにならん?
もっと極端に言うとアセンブラからBASICやBATを呼び出すようなこと
人それぞれで何も感じない人っているのかね
454:デフォルトの名無しさん
22/03/11 22:03:21.13 GmBPyzdt.net
例えばさっきのシーケンスをランダムな数字をその場で生成みたいな感じにすると、
#include <random>
#include <iostream>
#include <utility>
using namespace std;
template<class First>auto sum(First first){return first;}
template<class First, class... Rest> auto sum(First first, Rest... rest){return first+sum(rest...);}
template<class... Args> auto print_and_sum(Args... args) {
for (auto e: {args...}) cout << e << endl; // ココ
return sum(args...);
}
template <typename F, size_t... Seq> auto gen_and_print_and_sum_impl(F func, index_sequence<Seq...> ) {
return print_and_sum(func(Seq)...);
}
int main() {
random_device seed_gen;
mt19937 engine(seed_gen());
const size_t n = 3;
cout << gen_and_print_and_sum_impl(
[&](size_t i){ return engine();},
std::make_index_sequence<n>{}) << endl;
return 0;
}
こんな感じになるけど、genとprintとsumを分けたいとなるとtupleにしたくなって、templateでparameter packとtupleを行き来することになり、結構煩雑になる気はする
今は分けずに初期化リストにぶち込んで誤魔化してるけど…
こういうのも分けてtemplateにする?
455:デフォルトの名無しさん
22/03/11 22:03:23.71 bj9xq9MP.net
>>446
加算するだけの処理でtemplate使わない場合
どういった中間コードが作成されるのですか?
456:デフォルトの名無しさん
22/03/11 22:52:13.11 GmBPyzdt.net
ちなみに分けてテンプレートにしてみた。もう1レスに収まらないので消えたらごめんw
URLリンク(godbolt.org)
457:デフォルトの名無しさん
22/03/11 23:14:03.97 GmBPyzdt.net
#include <random>
#include <iostream>
#include <tuple>
using namespace std; // 余計なコード消したらギリギリ入ったw
template<class First>auto sum(First first){return first;}
template<class First, class... Rest> auto sum(First first, Rest... rest){return first+sum(rest...);}
template<typename T, size_t... Seq>
auto sum_tpl_impl(const T& tpl, index_sequence<Seq...>) {return sum(get<Seq>(tpl)...);}
template<typename... Types> auto sum_tpl(const tuple<Types...>& tpl) {
return sum_tpl_impl(tpl, make_index_sequence<tuple_size<tuple<Types...>>{}>{});
}
template <typename T, typename F, T... Seq> auto gen_impl(F func, index_sequence<Seq...>) {
return make_tuple(func(Seq)...);
}
template <size_t N, typename F> auto gen(F func) {
return gen_impl<decltype((func)(0))>(func, make_index_sequence<N>{});
}
template <typename T, size_t... Seq> void print_impl(const T& tpl, index_sequence<Seq...>) {
for (auto e: {get<Seq>(tpl)...}) cout << e << endl;
}
template <typename T> void print(const T& tpl) {
print_impl(tpl, make_index_sequence<tuple_size<T>{}>{});
}
int main() {
random_device seed_gen;
mt19937 engine(seed_gen());
const size_t n = 3;
const auto tpl = gen<n>([&](size_t i){ return engine();});
print(tpl);
cout << sum_tpl(tpl) << endl;
return 0;
}
458:デフォルトの名無しさん
22/03/12 13:11:11.84 uDPm4ane.net
大学で下記のようなSTLアルゴリズムの課題が出たのですが、全然わからないです
Hogeというstructがあったときに、
class HogeCollection {
public:
void display(ostream& os) const;
friend ostream& operator << (ostream& os, const Hoge& hoge);
private:
vector<Hoge> m_hoges;
};
display関数でm_hogesのすべてのHogeに対して os <<を呼び出し出力させなさい。
ただしforやwhileなどの手動ループを使用しないこと。
459:デフォルトの名無しさん
22/03/12 13:12:32.40 aEfI8PjB.net
>>450
ちょっとバグってたので修正
template <typename F, size_t... Seq> auto gen_impl(F func, index_sequence<Seq...>) {
return make_tuple(func(Seq)...);
}
template <size_t N, typename F> auto gen(F func) {
return gen_impl(func, make_index_sequence<N>{});
}
460:デフォルトの名無しさん
22/03/12 13:14:20.70 aEfI8PjB.net
>>451
言われた通りにやればいいやん
461:蟻人間
22/03/12 13:16:03.75 0xm7vL+e.net
>>451
<algorithm>を見てみ。便利な関数があるから。
462:デフォルトの名無しさん
22/03/12 13:21:05.85 45uBSPYW.net
「STLアルゴリズム」の課題だからSTL使えばいいんだもんな…
自分でアルゴリズム実装しろって課題だったらちょっと面倒だが
463:デフォルトの名無しさん
22/03/12 13:21:47.65 uDPm4ane.net
>>453,454
ありがとうございます。
std::for_each()なんてのがあるんですね・・・
464:デフォルトの名無しさん
22/03/12 13:55:39.46 uDPm4ane.net
度々すみません。
display関数を書いたのですが、VS2019でコンパイルエラーになります。
void HogeCollection::display(ostream& out) const
{
std::for_each(m_hoges.begin(), m_hoges.end(), [](const Hoge& hoge){ out << hoge; });
}
error C3493: 既定のキャプチャ モードが指定されていないため、'out' を暗黙的にキャプチャできません
465:デフォルトの名無しさん
22/03/12 14:02:30.95 9rXKBdgd.net
キャプチャモードを指定してあげれば…
466:デフォルトの名無しさん
22/03/12 14:09:52.70 uDPm4ane.net
>>458
ありがとうございます。以下で通りました!
[&out](const Hoge& hoge){ out << hoge; }
467:デフォルトの名無しさん
22/03/12 21:02:47.42 uDPm4ane.net
もう1つ、STLの問題がわからないので、質問させてください。
>>451のHogeCollectionに以下のようなメンバ関数があるとします。
void sort_by_key(const string& key)
{
if (key == "a") (Hogeのメンバ変数 m_aでソート);
else if (key == "b") (Hogeのメンバ変数 m_bでソート);
}
keyの値が"a" か "b"以外のときはエラーにしたい場合に、
実行時エラーでなくコンパイルエラーにするには、
この関数をどのように再設計すればよいでしょうか。
468:デフォルトの名無しさん
22/03/12 21:08:31.31 yBTVs/aF.net
keyの値はコンパイル時に決まるん?
469:デフォルトの名無しさん
22/03/12 21:49:16.97 uDPm4ane.net
>>461
そうですね。
今のプログラムでは、main関数で sort_by_key("a"); のように呼び出しています。
470:デフォルトの名無しさん
22/03/12 22:30:59.53 olrB42jq.net
>>462
コンパイル時にkeyを見てチェックするという縛りなら、実行時になるまでkeyがわからない状態にはできない。
雑にやってしまうならこうなる。
真面目にやるならフィールドへのポインタをテンプレート引数にすることになると思う
template<char key>
void sort_by_key()
{
if constexpr (key == 'a') (Hogeのメンバ変数 m_aでソート);
else if constexpr (key == 'b') (Hogeのメンバ変数 m_bでソート);
else throw std::invalid_argument();
}
471:デフォルトの名無しさん
22/03/12 22:46:39.28 uDPm4ane.net
>>463
やっぱそうですよね。
私も sort_by_keyを廃止して、sort_by_a と sort_by_b を作るくらいしか
思いつかないです。
472:デフォルトの名無しさん
22/03/13 18:52:37.38 mTtq0Uph.net
ポインタとか文字列の勉強をしていてよくわからなくなってしまいました
char* test(char* &s){
char* ans=“B”;
s[0]=‘C’;
s=ans;
return ans;
}
int main(int argc,char *argv[]){
char s1[]=“A”;
char* s2=s1;
#if 1
cout<<s2;
cout<<test(s2);
cout<<s2;
#else
cout<<s2<<test(s2)<<s2;
#endif
return 0;
}
上のようなものを動かす時、#if 1のときはABBと表示されて、#elseにするとBBCと表示されます
#elseのように一行にまとめた時に何が起こっているのかよくわからないので教えていただけると嬉しいです
よろしくお願いします
473:デフォルトの名無しさん
22/03/13 18:56:08.61 wq
474:c4hozV.net
475:デフォルトの名無しさん
22/03/13 19:00:28.93 wF3w3WV7.net
char*&なんて20年C++プログラマやってて一度も使ったことないわ…
どういうときに必要になるん?
476:デフォルトの名無しさん
22/03/13 19:02:39.85 mTtq0Uph.net
必要ないとは思うんですけど、理解を確かめるために色々試していたって感じです
477:デフォルトの名無しさん
22/03/13 19:02:42.19 uIbezUFD.net
>>467
おっちゃんやん
478:デフォルトの名無しさん
22/03/13 19:05:39.12 wqc4hozV.net
あーわかったけど説明めんどくさいな
とりあえず、if 1では1行ずつ評価(今の場合表示と読み替えても良い)が行われてるが
2行目の場合、評価(表示)の前に途中で関数が実行されて、値が書き換えられている、とだけ
479:デフォルトの名無しさん
22/03/13 19:06:08.61 e39Fa4ck.net
コレ質問してるのもおっちゃん臭いんだよな
いつもVC++だし、MFCみたいな書き方するし
480:デフォルトの名無しさん
22/03/13 19:06:22.60 wqc4hozV.net
誤 2行目の場合→正 elseの場合
481:デフォルトの名無しさん
22/03/13 19:12:14.63 wF3w3WV7.net
>>469
おう、最近白髪が気になってきた
482:デフォルトの名無しさん
22/03/13 19:20:55.04 e39Fa4ck.net
そして答えてるのも同じおっちゃんw
483:デフォルトの名無しさん
22/03/13 19:22:15.18 e39Fa4ck.net
そもそもそんな怪しいコーディングは普通のC++プログラマはしないから
warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
484:はちみつ餃子
22/03/13 19:38:16.17 lhgOY5DD.net
文字列リテラルの型は const char[] だが、 C++03 時代は const をはがして char* に (暗黙に) 型変換することが許されていた。
文字列リテラル限定の特別な型変換規則。
C++11 以降ではその規則は削除された。
C++03 時代でも非推奨なんだけど昔の本だとちょくちょくやってるんだよなぁ。
俺は持ってないから知らんけどロベール本とか有名な本でもそういう記述があるらしい。
485:デフォルトの名無しさん
22/03/13 19:51:18.33 hJwK9XXb.net
ロベール本は<iostream.h>とか書いてあったしC++03ですらないんじゃない?
486:デフォルトの名無しさん
22/03/13 19:54:43.65 mTtq0Uph.net
>>470
すみませんやっぱりよくわからなかったです
アドレスとか調べてみてみました
元の初期化されたばかりのs2を①、ansを②とします
•#if1において
最初の(1行目の)s2は①を指している
最後の(3行目の)s2は②を指している
•#elseにおいて
最初の(左の)s2は②を指している
最後の(右の)s2は①を指している
どうやらこうなっているようなのですが、なぜ逆になるのでしょうか?
487:デフォルトの名無しさん
22/03/13 20:06:11.90 GnTJD4Pm.net
>>471
VC++以外のがLinuxおじさんってイメージがある
実際ワイは平成2桁生まれやけどVC++しか触ったことないわ
Windowsじゃないとゲームしづらいし
488:デフォルトの名無しさん
22/03/13 20:12:18.98 e39Fa4ck.net
そんな調べれば一瞬で分かるようなこと自分で調べろよおっさんw
489:デフォルトの名無しさん
22/03/13 20:13:33.25 e39Fa4ck.net
お前の間違いをいちいち指摘するのは最近もう面倒w ヒントはあげたしw
490:デフォルトの名無しさん
22/03/13 20:14:46.38 mTtq0Uph.net
あなたには聞いたつもりはないのですけど…
491:蟻人間
22/03/13 20:18:18.08 +6IhxTlU.net
どいつもこいつもおっさん
492:デフォルトの名無しさん
22/03/13 20:28:56.19 GnTJD4Pm.net
おっさんって大体C++17以降アレルギーもってるよな
言語の進化に付いていくのをやめると新機能への愚痴ばかり言う老害になっちゃうんだよな
ああはなりたくないからC++40くらいまでは初心を忘れず学習し続けると心に誓うわ
493:蟻人間
22/03/13 20:35:15.04 +6IhxTlU.net
WinXPをサポートしている最新のC++規格となると選択肢が少なくなるのが嫌になる。
494:デフォルトの名無しさん
22/03/13 20:35:18.33 R0s3zSYd.net
Rustに変わるのでは?
495:デフォルトの名無しさん
22/03/13 20:56:20.40 e39Fa4ck.net
linuxだとgcc 9か10がデフォルトだし、9,10のデフォルトのc++標準は14だから
現状17,20は断らないと使えないので、自分で使う分以外は可能なら11、無理でも14までにしたいというだけ
VC++2022を除き20はデフォルトだと使えないので、自分で使う分でも20は滅多に使わない
twitterとかで記事を見かけたら23までは内容見たりするけど、自分で追っかけるのは17まで、興味があれば20までかな
23だとrangeがすごいことになってるみたいね
496:デフォルトの名無しさん
22/03/13 20:57:02.88 BWiYjhGb.net
>>478
評価の順と関数の実行が同じとは限らない。
だったかな
要するに cout<<s2①<<test(s2)②<<s2③;
君の考えでは①の評価、関数test(s2)②が実行されtest(s2)②の評価、最後にs2③が評価される、だろうけど
実際には先ににtest(s2)②が実行され、その後s2①の評価、test(s2)②の評価、s2③の評価と続く
って感じと思う
497:デフォルトの名無しさん
22/03/13 20:57:21.78 GnTJD4Pm.net
>>478
言語バージョンはいくつ?
逆になってるというよりC++17未満だと#elseのほうの評価順は未定義だからてきとーになってるってことだと思うが
498:蟻人間
22/03/13 20:59:06.58 +6IhxTlU.net
LinuxでDirty Pipeの脆弱性が出たからバージョンアップしとけよ。
499:デフォルトの名無しさん
22/03/13 21:22:04.20 mTtq0Uph.net
>>488
>>489
ありがとうございます
URLリンク(cpprefjp.github.io)
それっぽいのを見つけたので詳しく読んでみたと思います
言語のバージョンは多分C++11てやつです
GCC4.4.0のコンパイラーでした
本の付録についてきたものですが、結構古いやつだったみたいです
コンパイラー新しくすればもしかしたら動くのかもしれないですけど、あんまりこういうことはしないほうが安全なんでしょうかね
500:デフォルトの名無しさん
22/03/13 21:30:44.52 5qwn5s+6.net
>>478
この手の副作用が2つ以上現れるような動作は未規定か環境依存か未定義動作だったりを疑わなきゃいけない
cout<<s2<<test(s2)<<s2; の評価順序は規格で決まってる?
Noならコンパイラの気分次第で変わったりする。
何が起きてるかを知るにはコンパイル結果の逆アセンブリを見るのが一番手っ取り早い
501:デフォルトの名無しさん
22/03/13 21:33:21.26 e39Fa4ck.net
ちなみにVC++だと2019のオプション指定なし(C++17)で再現するんだけどねw
502:デフォルトの名無しさん
22/03/13 21:35:03.87 e39Fa4ck.net
あ、14だったw
URLリンク(godbolt.org)
503:デフォルトの名無しさん
22/03/13 21:37:39.20 e39Fa4ck.net
gccは9でデフォルト(c++14)指定でも再現しない
504:デフォルトの名無しさん
22/03/13 23:06:02.21 1ZaIS7m7.net
おまえもうハゲ始めてるのに何若者のフリしてんだよw
505:デフォルトの名無しさん
22/03/13 23:19:39.35 bI6DiOQ5.net
なんやおっさんが書きこんだらあかんのか
おっさんがC++やったらあかんのか、ええおい!
506:デフォルトの名無しさん
22/03/13 23:47:54.26 e39Fa4ck.net
今どきこんなスレ見てるのおっさんしかいねーよw
507:デフォルトの名無しさん
22/03/14 00:10:40.47 ci4mynDi.net
もう5ch自体がオッサンのすくつやしのう
508:デフォルトの名無しさん
22/03/14 02:20:02.12 rjFiO5pI.net
>>499
YouTubeで動画投降して、視聴者の年齢層を見てみたら、100人以上ユニークユーザー
数がいるのに、なぜか、45~54歳が 100% になっていた。
日本にはこの年齢しか存在せず、後は幻影であることが明らかと成った。
509:デフォルトの名無しさん
22/03/14 02:28:09.93 U570WKgz.net
URLを提示しない�
510:ニ何とも・・・内容次第では?
511:デフォルトの名無しさん
22/03/14 09:03:41.97 HoF8kO8q.net
>>484
昭和生まれだがclangが未だにstd::pmr::memory_resourceに未対応なことに怒ってるぞ
(experimentalにあるがほとんど実装されてない
512:デフォルトの名無しさん
22/03/14 11:38:57.54 ndyVaXT0.net
昭和ってことは戦争体験したんですね
513:デフォルトの名無しさん
22/03/14 12:26:33.29 GQP59fXj.net
生家のすぐ隣が根岸の米軍住宅だったのが俺の最も古い記憶だな
514:デフォルトの名無しさん
22/03/14 12:27:46.01 alz+gcb+.net
カトラーも昨日で80歳なんやで
515:デフォルトの名無しさん
22/03/14 12:28:28.21 7hHUAGdp.net
>>504
はえー
ええところに住んでいたんやな
森林公園のそばか?
516:デフォルトの名無しさん
22/03/14 12:32:31.77 VKZDzId0.net
c++17までカバーしてる良書教えてちょ
517:デフォルトの名無しさん
22/03/14 13:39:35.57 9629WIm4.net
俺の周りだと本物の老害は数が少なくて、脳が老害化してるアラサー前の若者が大多数だな
518:デフォルトの名無しさん
22/03/14 14:53:18.27 2N61p2oq.net
ニュース ・ トレンド
世界供給の約半分カバー
トレンドトピック: マック最終日、半導体不足
ツイッターのトレンドだけ見てたらAppleのマックのほうに見えるよな
519:デフォルトの名無しさん
22/03/14 16:35:39.58 GQP59fXj.net
>>506
美濃屋の工場らへん
520:デフォルトの名無しさん
22/03/14 18:24:00.75 7hHUAGdp.net
>>510
もしかして本牧あたり?
521:デフォルトの名無しさん
22/03/14 20:13:17.28 GQP59fXj.net
>>511
美濃屋の工場は現存してるからググるマップあたりで調べてみては?
今はどうか知らんが当時は割れせんをタダでくれてたので
未就学のガキがお使いしてた、そいういう距離だ
522:デフォルトの名無しさん
22/03/15 22:33:04.75 x6RxSJEa.net
追ってたらオッサンの会話にしか見えないやんけw
523:デフォルトの名無しさん
22/03/15 23:43:47.86 IA+izEeV.net
>>508
いや実際今の若人のほうが老害化(頭がカチカチ)になってるパターン多いよ
なんつかーSNSとかの弊害だろうな、方法論にはつねに正解があってそこからはずれるのは全部ダメ!
みたいな、自分で試さずに「誰某というカリスマが言うてるのが正しい」みたいな発想のやつが多い
524:デフォルトの名無しさん
22/03/16 00:07:07.20 kR1ttM2X.net
常にググって解法らしきものを見つけることを研鑽してきた弊害やろな。
誰かの踏襲しか出来ん、本人一人しかやってない、
どこにも参考資料なしとなったら思考停止か
もしくはあきらめちまう層。
525:デフォルトの名無しさん
22/03/16 00:36:18.16 892EcJv9.net
分野の蓄積が多くなるとそうなのかもね
526:デフォルトの名無しさん
22/03/16 01:22:56.72 dDBzFjnz.net
ム板でC++の規格以外の話をすることは板違い
527:デフォルトの名無しさん
22/03/16 08:57:09.69 eFhooB6a.net
>>515
デンマーク人やアメリカ人が作った言語にタダ乗りしてるジャップ全体に当て嵌まるな
年齢関係ねぇ
528:デフォルトの名無しさん
22/03/16 09:28:03.54 9b9buJuo.net
>>518
朝鮮人は板違い
529:デフォルトの名無しさん
22/03/16 09:47:16.21 sZ1wd+Ly.net
和製言語つーとRubyとか?
530:デフォルトの名無しさん
22/03/16 10:01:22.67 qWEoTKGw.net
>>519
ジャッッッッッップwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
531:デフォルトの名無しさん
22/03/16 10:50:04.72 sZ1wd+Ly.net
>>518
タダ乗りか?
言語は使い手がいなきゃ消えていくだけだぞ
若害を指摘されてムカついたのかも知れんが
的外れな逆ギレは相手の主張を補強するだけだ
532:デフォルトの名無しさん
22/03/16 11:00:56.73 UOk2lOR/.net
>>518
日本に寄生しているチョン君に言われてもねぇ
日本人は色々と貢献しているけどチョン君ときたら自分さえ良ければだからな
533:デフォルトの名無しさん
22/03/16 11:26:21.48 NlrnkDXA.net
>>521
火病w
534:デフォルトの名無しさん
22/03/16 11:33:19.05 FLjIdsXf.net
さすがに極東板かマ板行け。
535:デフォルトの名無しさん
22/03/16 11:41:44.02 w0SS0fac.net
ネタにマジレスするのもあれだが、国民的アプリすらも実質韓国産という惨状なのに韓国をバカに出来る神経が本当に分からない
まぁそれこそアメリカ人とかであれば分かるが
536:デフォルトの名無しさん
22/03/16 11:52:37.30 sCgw3/BF.net
>>526
あれは日本人プログラマーをハンティングして作らせて完成した途端にクビにしたんだな
知らないとでも思ってんのかよ
さすがバ姦酷
537:デフォルトの名無しさん
22/03/16 11:58:06.63 ken1LPi5.net
>>527
体調わるいときはネット断ちして寝てた方がええよ
お前のお母さんみたいに無理して死んだら元も子もないよ
538:デフォルトの名無しさん
22/03/16 12:29:23.19 eFhooB6a.net
>>527
シナチョンジャップってお互いにお互いで起源主張マウントし合ってるよな
そしてお互いにお互いを起源主張と罵り合ってるのがほんま笑える
539:デフォルトの名無しさん
22/03/16 12:29:53.35 fL7hhvH/.net
>>529
祖国にお帰り
540:デフォルトの名無しさん
22/03/16 15:21:21.65 OMEE91WJ.net
EclipseでGNU Autotoolsでビルドしたいんだけど、ワンクリックでファイル構成をパースしてMakefile.amを作ってくれるプラグインてないんかな?
541:デフォルトの名無しさん
22/03/16 16:43:46.25 IF2KaGKL.net
>>531
URLリンク(gammalab.net)
542:デフォルトの名無しさん
22/03/16 17:21:01.73 dC1HWmI+.net
defaultって単語が熱いなぁ
543:デフォルトの名無しさん
22/03/16 17:26:44.65 sZ1wd+Ly.net
ロシア国債?
544:デフォルトの名無しさん
22/03/16 17:43:54.03 AUMfJKJU.net
ルーブルをreturnするから問題ない
545:デフォルトの名無しさん
22/03/16 17:44:36.81 dC1HWmI+.net
C++11で正式採用されて11年経つというのに関数のdefault宣言を一度も使ったことがないわ
546:デフォルトの名無しさん
22/03/16 17:47:40.89 lLYtmIck.net
ええ…
547:デフォルトの名無しさん
22/03/16 17:49:13.58 dC1HWmI+.net
>>535
迷惑度でいうとreturnというより例外クラスをthrowする感じに近いですね
548:デフォルトの名無しさん
22/03/16 17:51:06.34 sZ1wd+Ly.net
>>536
= default; より
{} のほうが短いってこと?
549:デフォルトの名無しさん
22/03/16 17:54:01.36 dC1HWmI+.net
短いとは?
550:デフォルトの名無しさん
22/03/16 17:56:55.95 sZ1wd+Ly.net
ソースコードの文字数
551:デフォルトの名無しさん
22/03/16 19:05:34.58 gvdy2Zu4.net
bool oprator==(const ThisClass&)const = default;
は便利だぞ
552:デフォルトの名無しさん
22/03/16 19:32:49.28 YdzJshEX.net
{}の定義はtrivial判定にならないからなあ
553:デフォルトの名無しさん
22/03/16 20:15:30.86 dC1HWmI+.net
関数のdefault宣言を今まで一度も使ったこと人、正直に手を挙げなさい
554:デフォルトの名無しさん
22/03/16 20:54:55.18 J1wyaesr.net
ノ
555:デフォルトの名無しさん
22/03/16 22:03:43.15 LiWeOEyq.net
そもそもdefault宣言がわからない
何?
556:デフォルトの名無しさん
22/03/16 22:17:44.96 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:デフォルトの名無しさん
22/03/16 22:32:26.86 aL91bHGW.net
じゃあ便乗して
>>547
&&の意味を教えてください
const &の代わりになるんですか?
558:デフォルトの名無しさん
22/03/16 22:40:15.82 J1wyaesr.net
>>547
あーなるほど
便利かもな
559:デフォルトの名無しさん
22/03/16 23:08:39.16 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:デフォルトの名無しさん
22/03/16 23:19:48.63 0TydPa2f.net
それだけじゃ誤解しか生まないw
URLリンク(cpprefjp.github.io)
561:デフォルトの名無しさん
22/03/16 23:26:37.67 Jym8C6W+.net
昔はswap咬ましてたヤツだな
562:デフォルトの名無しさん
22/03/17 00:06:29.74 duMzaOgi.net
shared_ptr使えばいいじゃない
563:デフォルトの名無しさん
22/03/17 00:35:48.54 Oo+Bui2i.net
メモリポインタの差し替えか
564:デフォルトの名無しさん
22/03/17 00:43:42.18 DrTp92yO.net
>>550
>>551
ありがとうございます
普通の変数
左辺値参照
右辺値参照
ポインタ
ポインタのポインタ
etc...
うーんC++は頭が痛くなりそうですね
565:デフォルトの名無しさん
22/03/17 01:50:00.57 jsnVHM5N.net
>>544
(´・ω・`)の
566:デフォルトの名無しさん
22/03/17 01:50:25.35 faeKJv0z.net
そんなことくらいで頭が痛くなるなら、むしろやめとけw
567:デフォルトの名無しさん
22/03/17 03:32:17.05 kCjHZQsl.net
昨今のコード書かない言語オタクのオナニー拡張はスルーしてよい。
568:デフォルトの名無しさん
22/03/17 13:38:21.60 faeKJv0z.net
そのまま動かない部分コードだけ書くバカを除いたら、大抵のスレは多分俺しかコード書いてないけどねw
569:デフォルトの名無しさん
22/03/17 13:52:55.92 86Z8hvJ4.net
ム板で「俺はコード書いてるぞ、どうだ偉いだろうエッヘン」
これ寒すぎるんだけど・・・
570:デフォルトの名無しさん
22/03/17 14:50:03.04 zTqRydhk.net
ム板だからこそコード書く奴は偉いと思うぞ
ただ実際に書いてる奴はいちいちそんなことを自慢気に書いたりしないけどなw
571:デフォルトの名無しさん
22/03/17 14:53:55.54 86Z8hvJ4.net
偉いのか? やっと一人前の板民というだけだろ
コード書かないやつがム板ではアウェーなだけで
そこから相対的に見て偉いと言うことにどんな意味があるんだ
572:デフォルトの名無しさん
22/03/17 15:07:05.49 zTqRydhk.net
>>562
> コード書かないやつがム板ではアウェーなだけで
お前は自分がアウェーという意識を持つべき
573:デフォルトの名無しさん
22/03/17 15:22:32.44 86Z8hvJ4.net
>>563
そこで喧嘩腰かよ
実際に書いてる奴はいちいちそんなことを自慢気に書いたりしないと言ったばかりの
舌の根も乾かぬうちにそれか
頭冷やせ、話はそれからだ
574:デフォルトの名無しさん
22/03/17 15:33:03.66 faeKJv0z.net
>>564
コラコラお前は煽るなw
俺は>>558に俺のことスルーできなくなっちゃうけどいいの?って言っただけだよ
やれマウントだやれドヤ顔だとか、ホームとかアウェーとか、その手の話しはじめちゃうやつはちょっと発想がやばいって
あと承認欲求なんていくら高くてもクソの役にも立たんぞw
575:デフォルトの名無しさん
22/03/17 15:37:19.10 kCjHZQsl.net
なにケンカしてるん? おまえら仲良くしろよな^^
576:デフォルトの名無しさん
22/03/17 15:39:26.58 86Z8hvJ4.net
>>565
何が? 俺煽ってないよ
唯一、批判めいたことを言ったのは560だけ
例えばだが562に青筋立てるようなら
俺はコード書きませんと自己申告しているようなものだぞ
577:デフォルトの名無しさん
22/03/17 16:00:27.96 kKKT9czh.net
>>562みたいなことを書く奴に喧嘩腰とか言われてもなぁw
ちょっと頭冷やした方が良くね?
578:デフォルトの名無しさん
22/03/17 16:03:43.13 86Z8hvJ4.net
>>568
あれ? 否定しないのか
だったら話にならないな
579:デフォルトの名無しさん
22/03/17 16:15:46.57 0FIEYVVj.net
何を否定してほしいんだろ…
相当頭に血が上ってそうw
580:デフォルトの名無しさん
22/03/17 16:58:36.33 7ByY4YCs.net
そんなことよりC++の話しようよ
581:デフォルトの名無しさん
22/03/17 21:12:52.60 duMzaOgi.net
日本のトレンド
ちんこ勝負
トレンドトピック: 正式決定
ツイッターの形態素解析エンジンやばくないですか
582:デフォルトの名無しさん
22/03/17 21:16:07.60 VOoj+XQs.net
OSSの拾いもん回してるだけだろ
583:デフォルトの名無しさん
22/03/19 19:36:28.58 0pH7TqjX.net
std::vector::atの定義がこうなってるんですけど
reference at(size_type n);
const_reference at(size_type n) const;
これはエラーにならないんですか?
戻り値の型だけが違う場合オーバーロードはできないと勉強したんですけど
584:デフォルトの名無しさん
22/03/19 19:45:40.38 jBXtN76z.net
戻り型だけの違いやないやん
thisの違いは仮引数の違いやで
585:デフォルトの名無しさん
22/03/19 19:48:56.32 0pH7TqjX.net
あ、なるほど
ありがとうございます!
あと2つが呼ばれるときの違いもわからないのでそちらも教えていただきたいです
586:デフォルトの名無しさん
22/03/19 20:15:27.83 Cc07y5v9.net
少なくともconstオブジェクトからはconstメンバ関数しか呼べないね
587:デフォルトの名無しさん
22/03/19 20:28:47.85 Cc07y5v9.net
URLリンク(www7b.biglobe.ne.jp)
と思ったら非constオブジェクトはキチンとconstじゃない方を呼ぶんだね
588:デフォルトの名無しさん
22/03/19 20:29:14.00 hj0ig94x.net
const Tからはconstメンバ関数しか呼べない
Tからはconstじゃない方を優先的に呼ぶ
constメンバ関数しかなかったらconstメンバ関数を呼ぶ
589:デフォルトの名無しさん
22/03/19 20:30:44.79 hj0ig94x.net
わかりやすいのはvector::size()const;
constから使えるし、constじゃなくても普通に使える
590:デフォルトの名無しさん
22/03/19 20:31:32.90 HgLoiHN9.net
constあるなしでオーバーロードできるんですか?
591:デフォルトの名無しさん
22/03/19 20:36:43.47 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:デフォルトの名無しさん
22/03/19 21:07:20.86 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:デフォルトの名無しさん
22/03/19 21:08:09.65 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:デフォルトの名無しさん
22/03/19 21:08:27.42 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:デフォルトの名無しさん
22/03/19 21:41:36.92 DslNhsx1.net
最近静かだったので見てなかったら、めっさ自演されてるw
596:デフォルトの名無しさん
22/03/19 21:43:30.89 DslNhsx1.net
const云々とか流石にやばすぎなので、↓へw
0からの、超初心者C++相談室
スレリンク(tech板)
597:デフォルトの名無しさん
22/03/19 21:50:03.17 0pH7TqjX.net
😢
ありがとうございます
スレ汚し失礼しました
598:デフォルトの名無しさん
22/03/19 21:51:54.61 JACgrnJr.net
volatileメンバ関数の話もしないと片手落ちだぞ
599:デフォルトの名無しさん
22/03/19 22:02:55.92 hj0ig94x.net
>>588
その認識で合ってる
volatileもconstも伝染する性質が同じだけだからconstだけ覚えておけば問題ない
586はプログラム板で意味もなくマウント取るだけおじさんなので無視していい
600:デフォルトの名無しさん
22/03/19 22:17:28.58 DslNhsx1.net
マウント取りたいだけ、認められたいだけなのはお前w
自作自演のconst劇再演して面白い?w
601:デフォルトの名無しさん
22/03/20 01:21:01.58 lIF6fzsd.net
>>558を見てオモタが、
規格委員会が新しい言語要素を仕様化する際に、必ずコンパイラに実装してみて
実現可能性やよからぬ弊害が無いことや仕様に意図せぬあいまいさが無いことを実証するフェーズが入ると思うんだけど
その手の実装ってどこがやってるの?コンパイラメーカーに規格書のプレプリントを渡して丸投げ??
602:デフォルトの名無しさん
22/03/20 01:23:47.24 lIF6fzsd.net
もし規格委員会自身がやっているんなら神の実装技術を持った集団が規格委員会に居るはずで、>>558の言い様は正しくないかもしんないが、
万が一プロプラエタリーなコンパイラメーカーに丸投げなら参入障壁を高めるために複雑怪奇な仕様をあえて無理矢理引き受けるケースもあるかもしんない
かもしんない運転、
603:デフォルトの名無しさん
22/03/20 01:35:55.70 1+CNf8az.net
お前がそんな風に何も調べもせずに妄想だけで他人に聞いちゃう読んで字のごとくの「丸投げ」と一緒にしちゃダメだろwwww
604:デフォルトの名無しさん
22/03/20 01:37:12.20 1+CNf8az.net
調べればすぐ出てくるけど、
URLリンク(isocpp.org)
で聞けw
605:デフォルトの名無しさん
22/03/20 01:45:20.01 lIF6fzsd.net
いやすまん確かに
>(規格委員会が)実現可能性やよからぬ弊害が無いことや仕様に意図せぬあいまいさが無いことを実証する
というのは妄想やったわ;;;
606:デフォルトの名無しさん
22/03/20 01:48:15.78 1+CNf8az.net
何か裏を取れる事実がないなら全て妄想なんだよw お馬鹿さんw
607:デフォルトの名無しさん
22/03/20 16:56:04.20 XASZAdc/.net
すいません教えていただけないでしょうか
棒読みちゃんっていうフリーソフトが一向に更新されないので
真似て作りたいのですがどのようなプログラム言語を学んだらよろしいですか?
608:デフォルトの名無しさん
22/03/20 17:07:50.89 XF1vAqW3.net
参考書を一冊読み終わった程度のガチガチの初心者です。
初めて何か簡単なものを作ろうと思ったのですが、ウィンドウのサイズの指定の仕方が良くわかりませんでした。
VisualStudio2022でテンプレートはユニバーサルWindows-C++/Cxです。
そもそも質問する場所はここであってますでしょうか?
609:デフォルトの名無しさん
22/03/20 17:14:15.90 n/9ce90/.net
以下スレのほうが質問するのにあってると思うます
Win32API質問箱 Build127
スレリンク(tech板)
610:デフォルトの名無しさん
22/03/20 18:05:54.67 XF1vAqW3.net
>>600
すみませんありがとうございます。
611:デフォルトの名無しさん
22/03/20 19:52:39.86 kJ/tleYc.net
なぜガチガチの初心者がなぜC++/CXいってまうんや。
昔はまだしも、C++17とCX両方襲いかかってくるから
理解するの大変な上、理解しても先が難しいと思うが。
普通にc#+やむなしなトコだけC寄りのC++でいいと思うが。
612:デフォルトの名無しさん
22/03/20 20:32:45.31 EuUP+kdP.net
>>598
テキスト文字列を合成音声で読ませるってことならスピーキングライブラリに頼りきることになるだろうしPythonとかでお手軽にできるんじゃない
ライブラリに頼る場合はPythonとかJavaとかC#らへんが適正だと思う
自分も少し前にC#でそういうの作った事あるけどWindowsならSystem.Speech.dll参照して簡単に喋らせられたな
613:デフォルトの名無しさん
22/03/20 23:15:40.56 1+CNf8az.net
別に喋らせるんならC++でもpythonでもC#でも出来るけど、Javaは難しい(面倒)だろうねwwwww
614:デフォルトの名無しさん
22/03/20 23:38:16.04 UJahVNmy.net
パピコンでも喋るのに
615:デフォルトの名無しさん
22/03/20 23:46:10.52 1+CNf8az.net
流石にそのレベルの音声合成と一緒にしたら可哀想w
PCM音源がなかったので、FM音源でしゃべらせたり、beep音で音楽(単音・音量調整なし)鳴らしたり効果音出したりが当時の流儀w
616:デフォルトの名無しさん
22/03/21 01:56:07.23 TlR/Mg8q.net
ゲームアーツのソフトがFM音源でよく喋ってたわ
617:デフォルトの名無しさん
22/03/21 13:45:57.08 sqIPbQd/.net
C# - C++/CX - ネイティブC++
というふうに間に挟めば時としてマーシャリング規則がメドイP/Invokeからおさらばできる……!
ような気がする……!!
618:デフォルトの名無しさん
22/03/21 13:48:08.86 ROKj/vns.net
どうも599です。
買った参考書の終わりの方にUWPでなんか作ろうって書いてあったのと、スマートポインタってなんかいいなって思って、そんでC++/CXかなって思いました。
そもそも言語の選び方もなんか間違ってたっぽいんですけど、なんか、
最速っていう響きに寄せられてなんか、c++すごそう・・・、っておもって続けてます。簡単なものでもなんでもいいからなんか作りなと知人に言われたので、とりあえず簡単なタイマー作ることにしました。
619:デフォルトの名無しさん
22/03/21 13:55:13.39 2Z4azz5I.net
>>608
そこはC++/CXじゃなくてC++/CLI。というかまさにそのために作られたのがC++/CLI
620:デフォルトの名無しさん
22/03/21 14:01:07.93 ROKj/vns.net
今やっと昨日の質問の答えを見てきたんですけど、UWPやるのはやめといたほうがいいらしいですね。
VisualStudioでタイマー作ろうと思ったんですけどおすすめのテンプレートありますか?
621:デフォルトの名無しさん
22/03/21 14:05:11.38 sqIPbQd/.net
>>610
えっ
622:デフォルトの名無しさん
22/03/21 14:21:34.68 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:デフォルトの名無しさん
22/03/21 14:23:46.00 TlR/Mg8q.net
cliはc#と変わらんからなあ
間に挟む意味はないよ
624:デフォルトの名無しさん
22/03/21 14:57:53.89 HCPaDxP+.net
delphiとc++が合体したような言語よの
625:デフォルトの名無しさん
22/03/21 18:13:19.47 BAdp3agq.net
嘘つくな・・・あと
626:UWPならその名のついたスレに行け C++/CLIはマネージドコードを混ぜられるネイティブコードってだけで、C++の大規模な「MS独自拡張」 これを更に拡張してUWP要素を載せたのがCX C++じゃないんで、独自スレでも立てて一人で盛り上げてくださいw 個人的にはUWP自体がオワコンなので、せめてC#でやればいいのにとしか思えないがやるのは君の自由だw
627:デフォルトの名無しさん
22/03/21 18:22:20.19 OLHk6lmK.net
>>616
マネージド拡張と勘違いしてるんでは?
628:デフォルトの名無しさん
22/03/21 18:28:56.05 BAdp3agq.net
URLリンク(docs.microsoft.com)
629:デフォルトの名無しさん
22/03/21 18:32:58.53 Prmlj1K5.net
今はC++もクロスプラットフォームに対応する時代ですよ
いきなりWindowsべったりの書き方を覚えるより簡単なコンソールアプリとかQtから始めるのをお勧めしておきます
630:デフォルトの名無しさん
22/03/21 18:37:45.51 BAdp3agq.net
どうせいつものVC++使うconstの話ばかりするおじさんの自演w
631:デフォルトの名無しさん
22/03/21 18:46:38.57 2xjgwrAK.net
MSの独自拡張ガーとか言われてもC++を世界に普及させたのはMSですからね。
632:デフォルトの名無しさん
22/03/21 18:55:58.33 TEVzcoXo.net
MFCのことかね?
633:デフォルトの名無しさん
22/03/21 19:30:28.04 RS8xXzlz.net
ユニコードのことか~
634:デフォルトの名無しさん
22/03/21 19:33:36.97 zSyDDKWU.net
utf16 なんか消えて、utf32 と uft8 だけになればいいのに…
635:デフォルトの名無しさん
22/03/21 20:04:10.64 HCPaDxP+.net
J#が一番ワケワカランかった
636:デフォルトの名無しさん
22/03/21 22:37:44.93 dYQgVp3+.net
ちんちんシュッ!シュッ!シュッ!
637:デフォルトの名無しさん
22/03/22 08:04:59.19 jyd+b1no.net
なんでqmlって機能があるQtよりelectronが普及したのか
638:デフォルトの名無しさん
22/03/22 08:19:14.63 4wXemx3i.net
>>627
Qtはライセンスが面倒じゃない?
特にwindowsはよくわからん。
639:デフォルトの名無しさん
22/03/22 10:17:12.52 e045zQYf.net
>>619
プラットフォームをWindowsからQtに乗り換えるだけじゃ同じことじゃん
アプリから見てAPIでしかないんだから
640:デフォルトの名無しさん
22/03/22 10:31:07.58 OaCGWLhd.net
泥舟に乗り換えろと言われてもな。
641:デフォルトの名無しさん
22/03/22 10:46:04.30 mouTiTR6.net
共通プラットフォーム使うのは全然マシだと思いますよ
642:デフォルトの名無しさん
22/03/22 10:51:02.79 OaCGWLhd.net
Javaの失敗から何も学ばないのは馬鹿というものだ。
643:デフォルトの名無しさん
22/03/22 10:53:19.42 mouTiTR6.net
C++の失敗とかここで言われても
644:デフォルトの名無しさん
22/03/22 12:08:25.57 7HP7s9m4.net
じゃ鉄舟にのりかえるわ
645:デフォルトの名無しさん
22/03/22 12:48:01.28 BLG0uiz2.net
Win32で書いたソースコードそのままでスマホで動かせるんか?
646:蟻人間
22/03/22 12:59:12.46 BjxSmr6W.net
>>635
最近はARMで動くWindowsもあるよ。
647:デフォルトの名無しさん
22/03/22 13:03:45.42 e045zQYf.net
こういう質問、Windowsとスマホの用途の違いという根本を蒸ししているパターン多いよな
前提になっているパーツや環境だって違うのに「自分は移植作業したくない」
じゃあPGやめたらって話
648:デフォルトの名無しさん
22/03/22 13:04:16.00 e045zQYf.net
s/蒸し/無視/g
649:デフォルトの名無しさん
22/03/22 13:04:33.14 njeYgDdQ.net
>>636
MS も Windows phone から撤退したじゃん
650:デフォルトの名無しさん
22/03/22 13:31:47.44 1zUmccnl.net
Win32は「Windows」という環境依存定期
651:デフォルトの名無しさん
22/03/22 13:37:00.07 OaCGWLhd.net
処理系依存していいのかC/C++の最大のメリットだし。
652:デフォルトの名無しさん
22/03/23 11:56:26.96 I3LWr1Un.net
変なのキタ
URLリンク(ossia.io)
653:デフォルトの名無しさん
22/03/23 13:08:39.58 AtA1Snji.net
>>642
構造体を入れ子にしてGUIノードツリーを表現するの面白いね
最近はXAML/FXML/HTMLなどXML派生言語でGUI構造を表現するものが多いけど、言語固有の構造体で表現するほうがパース・オーバーヘッドがなくていいのかな
まだ、ボタン押下時のコールバック(ハンドラー)など不明点が多い
654:デフォルトの名無しさん
22/03/23 14:11:26.99 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:デフォルトの名無しさん
22/03/23 14:25:09.91 KVWBweE9.net
実行時に動的に取るためにはどっかで入れてあげないと駄目ですなー
656:デフォルトの名無しさん
22/03/23 16:45:23.47 U3MPlBH2.net
ある比較関数
f = [](int l, int r){return l > r;};
があったとして、priority_queue<int> に f を渡したときと vector<int> を f で sort したときに両者の順番が異なるの非自明過ぎるのだが
なんで priority_queue の方はこれで昇順になるの?
657:デフォルトの名無しさん
22/03/23 16:49:02.84 nUwfSeaH.net
extern C declspec dlldxport 付けて、
実行時に自分自身をサーチすれば、付けた関数については
文字が残るから可能だけど、やるかと言われたら
まあ最悪一歩手前の方法やな...
658:デフォルトの名無しさん
22/03/23 17:47:41.73 Rq928qXu.net
enumの名前ほしがったり関数名ほしがったり
最初からC#使えばいいんですよ。
659:デフォルトの名無しさん
22/03/23 18:52:01.34 wWGNqGIP.net
C++erは速度厨なので名前を実行時解決するC#のリフレクションはあり得ない
C++23に入るかもしれない静的リフレクションを待ちましょう
URLリンク(cppmap.github.io)
660:デフォルトの名無しさん
22/03/23 18:58:48.40 nUwfSeaH.net
静的リフレクションとか意味うっすw
リフレクション欲しいのは大抵自分自身が定義するものではないのに。
661:デフォルトの名無しさん
22/03/23 19:02:11.91 4wwS6ZaC.net
用途に応じてベターな手段を選ぶことができるとこまで整備されると
いいね
662:デフォルトの名無しさん
22/03/23 19:30:22.64 Rq928qXu.net
よくねーな。C++はとことん薄っぺらであるべき。
663:デフォルトの名無しさん
22/03/23 19:48:39.65 BZjVj5dO.net
>>646
template <class T,
class Container = std::vector<T>,
class Compare = less<typename Container::value_type>>
class priority_queue
デフォルトはlessで<を定義して、降順にするのが元の意味
fで<の意味をひっくり返せば、昇順になる
664:デフォルトの名無しさん
22/03/23 20:10:07.72 8yKlU7lo.net
つーかリフレクションてコンパイル時に決定できない事を扱うから意味あるのに
性的に解決できることはリフレクションとしては意味がない
665:デフォルトの名無しさん
22/03/23 20:35:05.43 FjwJYdtM.net
>>649
速度厨? なにバカ言ってんだ
ハードソフトまで含めた全てのトータルバランスを追求するんだよ
そうじゃないおまえの眼がこの世界を正しく写
666:せないだけだ
667:デフォルトの名無しさん
22/03/23 20:52:55.01 k8Z8CHR2.net
またマクロ/const/リフレクション/windowsおじさんが自演で暴れてるw
マクロ→廃止すべき
const→常識なので話題に挙げないべき
リフレクション→静的/手動なべき(というか動的にリンクされない限り、C++では不要)
windows→滅びるべき
なのでおじさん不要w
668:デフォルトの名無しさん
22/03/23 21:42:30.64 Rq928qXu.net
ATL使ってCOMで実装しなさい。
669:デフォルトの名無しさん
22/03/23 21:47:56.30 nUwfSeaH.net
COMとかWin用に大型アプリ提供してる会社しか
継続してないんじゃないか。
C#のCOMは簡単だし妙な記述皆無だから
まだ使ってる人居そうだが。
670:デフォルトの名無しさん
22/03/23 22:19:07.27 k8Z8CHR2.net
COM/DCOMの技術は良かったし、MSはときどきいい技術を作るんだけど、元の信用度が足りなくて普及しなくて失敗するw
COMやC++/CLI以降の話は正確にはC++じゃないので別スレでも作ってやれw
671:デフォルトの名無しさん
22/03/23 22:26:18.54 Rq928qXu.net
MSの信用が足りないとかCOMが普及しなくて失敗したとか釣り針でかすぎ。
井の中の蛙というか下水道のゴキブリ。社会に出たことがないのだろう。
672:デフォルトの名無しさん
22/03/23 23:17:30.63 k8Z8CHR2.net
釣りじゃねーよw
当時OMGのCORBA、JavaのRMI、MSのDCOMとかあったけど、全部潰れてSOAP一択になったろw
今じゃそれも廃れてRESTだけ残ってるw 井の中の蛙はお前w
673:デフォルトの名無しさん
22/03/23 23:26:20.36 e3uFLGnE.net
DCOMその他とCOMを同列に扱うな
674:デフォルトの名無しさん
22/03/23 23:37:17.78 k8Z8CHR2.net
ただのCOMなんて・・・w ActiveXと一部のコントロールで使われただけだろw 一言で言えばゴミw
675:デフォルトの名無しさん
22/03/23 23:48:22.86 Rq928qXu.net
釣りかと思ったらこいつガチの引きこもりやんw
676:デフォルトの名無しさん
22/03/24 00:06:11.51 1Vr2GJ3G.net
自己紹介乙w
ATLほんとに使ったことあんのか?w
俺はWin3.1のMFC/OLE時代からWindowsどっぷりで作りまくってたぞ
Java/.NET以降はWindowsあんまり触らなくなったけどなw
677:デフォルトの名無しさん
22/03/24 00:19:47.29 JVs5nwp2.net
今でもWindowsはcomの塊。IE、DirectX、Office全部comやで。
一太郎にExcelの表貼れるのも、vbscript、perlからExcel呼べるのも全部comのおかげ。
専ブラが一日で作れるのもcomのおかげ。
規格だけで実装では禄にオブジェクト間通信できなかったCORBAを
COMの対抗馬として本気で持ち出すあたりが無知で笑える。圧倒的MSの勝利。
678:デフォルトの名無しさん
22/03/24 01:01:10.28 1Vr2GJ3G.net
そりゃWindowsはOLE時代から使ってるから当たり前だろw
むしろ他で使われてなければ負けなんだよw
679:デフォルトの名無しさん
22/03/24 01:08:56.24 1Vr2GJ3G.net
あと普通にCORBAは結構実装されてんぞ
COMが他のプラットフォームで使われてんの見たことないし、MS以外のCOMもWindowsプラットフォームでも結構レアw
専ブラなんて今どき何で作るのか知らんが、普通ならElectronで書くだろうし、COMってIEコンポーネントで作るのか???w
バカも休み休み言えw
680:デフォルトの名無しさん
22/03/24 01:38:18.08 y95b8UUh.net
Electronだと外からの操作大変だしアプリへの組み込み難しくなるから(electronの中で戦う苦しい状態に)
普通はWebView2もってくんじゃないかな。
どんな独自アプリでもサクッと組み込めるっしょ。
681:デフォルトの名無しさん
22/03/24 02:15:16.69 1Vr2GJ3G.net
ないないw Electron超簡単だよw JS書けるだけでいいし、すごい面倒くさいよw 二重管理だからw
WebView2なんてほとんど使ってるやついないだろうし、何でも外からやらないといけないからすごい大変そうw
Webの画面を表示したいのでなければ俺なら絶対に使わないw
682:デフォルトの名無しさん
22/03/24 02:38:00.53 +RGleBjy.net
今はElectronより高速なTauriだな
683:デフォルトの名無しさん
22/03/24 02:39:48.55 1Vr2GJ3G.net
TauriとかWebView2よりないw
684:デフォルトの名無しさん
22/03/24 03:31:57.74 DeDdmrpu.net
Tauri>>>Electronで大方の勝負ついた感じだな
685:デフォルトの名無しさん
22/03/24 04:02:03.79 y95b8UUh.net
Electronて既存で出来上がってるアプリの一部、
一つのタブ内やパネル内に手軽に組み込めるの?
686:はちみつ餃子
22/03/24 04:16:18.85 3pj9A089.net
WinRT は COM がベースだよ。
C++ から利用するなら旧来の API より使いやすいんだが、
WinRT もそれほど積極的に活用されてる感じはしないな。
687:デフォルトの名無しさん
22/03/24 04:28:29.36 1Vr2GJ3G.net
そこに気付くとはw
C++のままだからな
.NETにすると自動的に変換可能なCOMになるっていうw
688:はちみつ餃子
22/03/24 04:39:56.11 3pj9A089.net
?
689:デフォルトの名無しさん
22/03/24 05:46:41.46 1Vr2GJ3G.net
.NETのアセンブリは元々publicなら設定によりCOM参照可能に出来る
URLリンク(docs.microsoft.com)
WinRTは言語的な拡張なしに=C++のままで.NET(だけじゃないけどw)とinteractionするので、
URLリンク(en.wikipedia.org)
必然的にCOMになるよねって言っただけw
690:デフォルトの名無しさん
22/03/24 07:07:41.33 JVs5nwp2.net
> むしろ他で使われてなければ負けなんだよw
圧倒的シェアのWindowsではなく
ニッチ市場で使われないと負けという謎のオレオレルールw
691:デフォルトの名無しさん
22/03/24 07:22:11.34 s6VdVAhb.net
イキッてるくせにCOMがそもそも何のためにあるのかがわかってないやつが散見されるな
692:デフォルトの名無しさん
22/03/24 07:44:02.07 1Vr2GJ3G.net
そもそも論ならWindowsのコントロール間でデータを授受するための仕組みであるOLEの成れの果てだぞw
ただ最終的に目指していたのはDCOMで、プラットフォーム非依存、DLLヘルからの脱却/GUID(UUID)での識別/バージョン管理などのローカル諸問題解決を含む、RPCだよw
.NET以降は表立って出て来ない形になり、Windowsでカスタムコントロールを作ったりしない限り、言葉としてもほぼほぼ失われたものだと思ってるw
693:デフォルトの名無しさん
22/03/24 07:47:15.28 JVs5nwp2.net
> COMが他のプラットフォームで使われてんの見たことない
つ OpenVMS
694:デフォルトの名無しさん
22/03/24 07:55:15.79 1Vr2GJ3G.net
VAXは流石に名前しか知らんw マニアックすぎるだろw
Openになってからも興味ないし、Alphaチップマシンは使ったことあるけど、普通にWindows動いてたよw
695:デフォルトの名無しさん
22/03/24 08:11:46.86 s6VdVAhb.net
APIの提供形態ってだけ
APIで発行された要求を処理している何者かがどこにあろうがそういう問題じゃないし
他の類似するものと比べるのもナンセンス
VirualAllocとGETMAINを比べるような不毛な話だ
696:デフォルトの名無しさん
22/03/24 08:34:27.56 1Vr2GJ3G.net
そこでIBMとか・・・時代遅れにもほどがあるでしょ
なんでそんなどんどん話を逸していくの?
俺はDCOM的意味合いでしかCOMという用語を使ってないし、文脈的にはプラットフォーム非依存な話だと思ってたんだがw
697:デフォルトの名無しさん
22/03/24 09:33:43.04 JVs5nwp2.net
C++はオブジェクト思考言語で、COMやCORBAはオブジェクト間通信の技術で、
ネットワーク越し、異処理系間通信もできるからといってそれのみと限定するほうが謎。
しかもコケたCORBAはともかくCOMが普及せず失敗したとかMS-OfficeやWindowsは普及してないと言ってるようなもの。
OLEの成れの果てと言うが木を見て森を見ずというか、むしろ草を見て地球を見ずレベル。
698:デフォルトの名無しさん
22/03/24 13:52:17.42 TSqeyWkd.net
氷河期世代特有のMSアンチおっさんは放置しておけ
699:デフォルトの名無しさん
22/03/24 16:22:26.20 M4wmYApX.net
template引数によって関数の定義有無を変えたいのですが、そのようなことは可能でしょうか?
template<typename T>
class Test
{
public :
FuncA(){ ・・・ }
FuncB(){ ・・・ } ←Tがfloat型以外のときに定義するようにしたい
}
700:デフォルトの名無しさん
22/03/24 16:50:06.09 6Nkoi7KJ.net
>>687
Linuxとかに手を出して、ちょっとPCに詳しくなった気になってMSアンチになるやつはどの世代にもいるから安心しろw
701:デフォルトの名無しさん
22/03/24 17:02:11.79 RVLAMmSf.net
>>688
C++20の<concept>使えるなら
void FuncB()requires(!std::same_as<T,float>){...}
702:デフォルトの名無しさん
22/03/24 17:11:46.20 s6VdVAhb.net
conceptは要するにSFINAEだから
C++17ならこういけばいい
auto FuncB() -> std::enable_if_t<!std::is_same_v<T, float>, void> {}
703:688
22/03/24 17:32:02.64 M4wmYApX.net
>>690-691
最近のC++ではそんなことが可能なんですね・・・!!
ありがとうございました!!
704:デフォルトの名無しさん
22/03/24 17:57:10.73 OAaMfHu2.net
あとは特化テンプレートとか
705:デフォルトの名無しさん
22/03/24 18:00:33.75 s6VdVAhb.net
最近のっつーかenable_ifはC++11から使えるぞ
706:688
22/03/24 18:09:06.73 M4wmYApX.net
>>693-694
ありがとうございます!
707:デフォルトの名無しさん
22/03/24 18:09:14.56 RVLAMmSf.net
>>691
そのSFINAEはまずい
class Test<float>が実体化された時点でfuncBが実体化される
(funcBはtemplateではない)
実体化した時点でfuncBの返り値型がtemplate依存のenable_ifではなくなるためコンパイルエラーになる
708:デフォルトの名無しさん
22/03/24 19:35:07.28 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:デフォルトの名無しさん
22/03/24 22:24:41.52 eqpcVqC2.net
MSアンチというよりもMSの囲い込みが強引すぎて、他の環境を知ってしまうとMSから離れたくなるだけでは?
710:デフォルトの名無しさん
22/03/24 22:30:06.36 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:デフォルトの名無しさん
22/03/24 23:04:17.88 MDLggK/J.net
MSよりマックの囲い込みのほうが鼻につくと思うのは自分だけだろうか
712:デフォルトの名無しさん
22/03/24 23:13:46.53 1Vr2GJ3G.net
apple>>>MS>>>
713:>>それ以外って感じの強さw
714:デフォルトの名無しさん
22/03/24 23:16:10.29 y95b8UUh.net
囲い込みの点ではハードから開発環境からストアに至るまでアップルは異常な囲い込み。
社外に対しては会社も各社員も殆ど貢献しねぇし。
アップルのためだけに請け負い会社潰しながら株価あげるため活動しとる。
715:デフォルトの名無しさん
22/03/24 23:27:03.23 k3BsWDgY.net
MSの囲い込みとか言ってるのは爺だけだろ
OSSにどんだけ貢献してると思ってるんだよ
716:デフォルトの名無しさん
22/03/24 23:44:46.04 1Vr2GJ3G.net
いやいやなんかWeb系のTypeScriptとかvscodeとかazureとかそういうのはいいんだよw
問題はWindows本体w
まともに動かないレベルのハードに未対応というのは分かるけど、どう見ても性能的に問題ないハードを対象外にしちゃうWindows11はどう考えてもやり過ぎw
717:デフォルトの名無しさん
22/03/24 23:45:11.78 rNy1eSrz.net
悪のゲイシ帝国。
718:デフォルトの名無しさん
22/03/24 23:46:28.20 rNy1eSrz.net
UEFIとチンポ2.0はセキュリティでは?
719:デフォルトの名無しさん
22/03/25 00:01:19.19 m/iwpp86.net
>>703
VSCodeが囲い込みツールだもん、使えねぇって
720:デフォルトの名無しさん
22/03/25 01:09:44.76 XVe+E9v/.net
Mac は、Homebrew, Fastlane とか、Rubyist が作らないと滅ぶw
CircleCI の料金表のmedium のクレジットは、
Docker 10, Windows 40, Mac 50
囲い込みとは思えないほど、高い
721:デフォルトの名無しさん
22/03/25 02:12:51.70 72EwLK9c.net
>>704
Windows11のハード対象外は囲い込みとは言わないのでは?
722:デフォルトの名無しさん
22/03/25 03:06:03.91 5+dT7ErM.net
>>704
アップルなんて自社製のマシンでしか動かないんだけど
アプリも自社製のマシンでしか開発できないし
ストアも自社製しか認めない
自社製のアプリの邪魔になるものは開発を認めなかったり審査で落す
こういうのを囲いこみっていうんだけど・・
723:デフォルトの名無しさん
22/03/25 03:15:43.43 MgzERarD.net
Appleは開き直ってとことん囲い込みを追求してるからこそ逆に認められてるところがある
開発言語からしてObjective-CとSwiftっていう独自言語で徹底してる
MSは中途半端にC++標準に擦り寄ってるのがよくないね
724:デフォルトの名無しさん
22/03/25 05:45:38.18 rvvBDzFl.net
VSCodeが囲い込みツール?
Linuxでも動くしそもそもOSSなんだけど…
Visual Studioと言うならまだわかるけどw
725:デフォルトの名無しさん
22/03/25 06:08:26.54 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:デフォルトの名無しさん
22/03/25 07:22:48.15 Sf6AbPmi.net
「資源を独占的に確保すること」の意味での囲い込みw
Windowsで市場を独占し、離れる場合のリスクとコストを高めてから、高コストを強いるw
appleがやってるのは独占ではないけど、購入後に高コストを強いる同じ仕組みw
727:デフォルトの名無しさん
22/03/25 08:04:40.58 KarnMDBa.net
macbookで動くwindows見かけると思わず笑みがこぼれるわ
728:デフォルトの名無しさん
22/03/25 08:06:57.63 PW5qBu6I.net
MSが資源を独占的に確保したわけじゃなくて
作りやすいWindows、使いやすいWindowsとユーザが選んだ結果だからね
相乗効果で結果的に市場を埋め尽くしているに過ぎず独占しているわけじゃないけどね
Macが誰にでも開発しやすい環境だったり
linux等が誰にでも使いやすい環境だったならMS市場にはならなかったかもしれない
でもまあMacもWindowsと同じ道を進んでいたら生き残っていなかったかもしれないけど
729:デフォルトの名無しさん
22/03/25 08:13:25.03 bHihdD5b.net
互換性重視で昔はシェア伸ばしたMSも
なぜかAppleのマネして切り捨てするようになってシェア落としてる。
730:デフォルトの名無しさん
22/03/25 08:32:50.33 Sf6AbPmi.net
ほんと頭悪いな・・・OS資源を独占的に確保してるでしょw
731:デフォルトの名無しさん
22/03/25 09:03:46.71 bHihdD5b.net
マカーはほんと馬鹿だからな
732:デフォルトの名無しさん
22/03/25 09:09:22.13 PW5qBu6I.net
>>718
OS資源って何?
733:デフォルトの名無しさん
22/03/25 09:12:25.62 rQC9vpY7.net
嫌ならLinuxでも使えば?w
734:デフォルトの名無しさん
22/03/25 09:15:06.51 6oNwnU1m.net
>>717
MCAの件で愛想尽かしたのに
結局ミイラ取りがミイラってやつだね
735:デフォルトの名無しさん
22/03/25 09:16:17.27 haNY4PtR.net
最近はGPUパススルー備えたKVMでLinuxでもほぼパフォーマンスペナ無しでWindows用ゲームできるらしいけどほんまなん?
736:デフォルトの名無しさん
22/03/25 09:20:09.35 KE5lJ15x.net
>>723
嘘やろ
ハイパーバイザーとゲストosの間を遷移するのにオーバーヘッドかかるやろ
いくらCPU支援機能があるからって無視はできない
737:デフォルトの名無しさん
22/03/25 10:53:37.87 6oNwnU1m.net
同じソフトをホストとゲストで使い比べるとやっぱ体感速度違うからな
738:デフォルトの名無しさん
22/03/25 12:39:31.11 Sf6AbPmi.net
apple製品は買ってないし、Native LinuxもWindowsも使ってるが、WindowsのVC++使いはスレ違いの話題をいつまで続ける気なんだ?
739:デフォルトの名無しさん
22/03/25 18:58:24.97 NAR86/dh.net
>>726
OS資源って何?
740:デフォルトの名無しさん
22/03/25 19:10:47.53 3+VV5Xxj.net
50代になると30代の2割以下の量になるらしいから大事にしろよ
741:デフォルトの名無しさん
22/03/25 19:30:24.85 5XdEy59o.net
ぐり@関賢太郎 航空軍事記者
URLリンク(twitter.com)
何年か前、日本から韓国へのフッ化水素輸出に制限をかける外交摩擦あったよね。
あれで韓国製のガリウム砒素半導体を輸入していたロシアへ供給が止まり、ロシアの軍用AESAレーダーの生産が遅れ、戦闘機への搭載もできなくなるドミノ倒しになっていたことに気付いてしまった。
国際社会から孤立ってこわい
(deleted an unsolicited ad)
742:デフォルトの名無しさん
22/03/26 02:00:27.84 w1Z+3JKm.net
>>726
OS資源って何?
743:デフォルトの名無しさん
22/03/26 22:01:10.04 +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:デフォルトの名無しさん
22/03/26 22:09:33.63 RpKSs2nj.net
>>731 URLリンク(cpprefjp.github.io) ?