C++相談室 part159

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2022/02/19(土) 11:56:42.14ID:kSnJ/KwP
前スレ
C++相談室 part158
https://mevius.5ch.net/test/read.cgi/tech/1636969758/
2022/03/24(木) 17:11:46.20ID:s6VdVAhb
conceptは要するにSFINAEだから
C++17ならこういけばいい

auto FuncB() -> std::enable_if_t<!std::is_same_v<T, float>, void> {}
692688
垢版 |
2022/03/24(木) 17:32:02.64ID:M4wmYApX
>>690-691
最近のC++ではそんなことが可能なんですね・・・!!
ありがとうございました!!
2022/03/24(木) 17:57:10.73ID:OAaMfHu2
あとは特化テンプレートとか
2022/03/24(木) 18:00:33.75ID:s6VdVAhb
最近のっつーかenable_ifはC++11から使えるぞ
695688
垢版 |
2022/03/24(木) 18:09:06.73ID:M4wmYApX
>>693-694
ありがとうございます!
2022/03/24(木) 18:09:14.56ID:RVLAMmSf
>>691
そのSFINAEはまずい
class Test<float>が実体化された時点でfuncBが実体化される
(funcBはtemplateではない)

実体化した時点でfuncBの返り値型がtemplate依存のenable_ifではなくなるためコンパイルエラーになる
2022/03/24(木) 19:35:07.28ID:1Vr2GJ3G
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;
}
2022/03/24(木) 22:24:41.52ID:eqpcVqC2
MSアンチというよりもMSの囲い込みが強引すぎて、他の環境を知ってしまうとMSから離れたくなるだけでは?
2022/03/24(木) 22:30:06.36ID:bdM8JANZ
どうしても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();
}
2022/03/24(木) 23:04:17.88ID:MDLggK/J
MSよりマックの囲い込みのほうが鼻につくと思うのは自分だけだろうか
2022/03/24(木) 23:13:46.53ID:1Vr2GJ3G
apple>>>MS>>>>>それ以外って感じの強さw
2022/03/24(木) 23:16:10.29ID:y95b8UUh
囲い込みの点ではハードから開発環境からストアに至るまでアップルは異常な囲い込み。
社外に対しては会社も各社員も殆ど貢献しねぇし。
アップルのためだけに請け負い会社潰しながら株価あげるため活動しとる。
2022/03/24(木) 23:27:03.23ID:k3BsWDgY
MSの囲い込みとか言ってるのは爺だけだろ
OSSにどんだけ貢献してると思ってるんだよ
2022/03/24(木) 23:44:46.04ID:1Vr2GJ3G
いやいやなんかWeb系のTypeScriptとかvscodeとかazureとかそういうのはいいんだよw
問題はWindows本体w
まともに動かないレベルのハードに未対応というのは分かるけど、どう見ても性能的に問題ないハードを対象外にしちゃうWindows11はどう考えてもやり過ぎw
705デフォルトの名無しさん
垢版 |
2022/03/24(木) 23:45:11.78ID:rNy1eSrz
悪のゲイシ帝国。
706デフォルトの名無しさん
垢版 |
2022/03/24(木) 23:46:28.20ID:rNy1eSrz
UEFIとチンポ2.0はセキュリティでは?
2022/03/25(金) 00:01:19.19ID:m/iwpp86
>>703
VSCodeが囲い込みツールだもん、使えねぇって
2022/03/25(金) 01:09:44.76ID:XVe+E9v/
Mac は、Homebrew, Fastlane とか、Rubyist が作らないと滅ぶw

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

囲い込みとは思えないほど、高い
2022/03/25(金) 02:12:51.70ID:72EwLK9c
>>704
Windows11のハード対象外は囲い込みとは言わないのでは?
2022/03/25(金) 03:06:03.91ID:5+dT7ErM
>>704
アップルなんて自社製のマシンでしか動かないんだけど
アプリも自社製のマシンでしか開発できないし
ストアも自社製しか認めない
自社製のアプリの邪魔になるものは開発を認めなかったり審査で落す
こういうのを囲いこみっていうんだけど・・
2022/03/25(金) 03:15:43.43ID:MgzERarD
Appleは開き直ってとことん囲い込みを追求してるからこそ逆に認められてるところがある
開発言語からしてObjective-CとSwiftっていう独自言語で徹底してる
MSは中途半端にC++標準に擦り寄ってるのがよくないね
2022/03/25(金) 05:45:38.18ID:rvvBDzFl
VSCodeが囲い込みツール?
Linuxでも動くしそもそもOSSなんだけど…
Visual Studioと言うならまだわかるけどw
2022/03/25(金) 06:08:26.54ID:6oNwnU1m
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はぶきみにほえている!
2022/03/25(金) 07:22:48.15ID:Sf6AbPmi
「資源を独占的に確保すること」の意味での囲い込みw
Windowsで市場を独占し、離れる場合のリスクとコストを高めてから、高コストを強いるw
appleがやってるのは独占ではないけど、購入後に高コストを強いる同じ仕組みw
2022/03/25(金) 08:04:40.58ID:KarnMDBa
macbookで動くwindows見かけると思わず笑みがこぼれるわ
2022/03/25(金) 08:06:57.63ID:PW5qBu6I
MSが資源を独占的に確保したわけじゃなくて
作りやすいWindows、使いやすいWindowsとユーザが選んだ結果だからね
相乗効果で結果的に市場を埋め尽くしているに過ぎず独占しているわけじゃないけどね

Macが誰にでも開発しやすい環境だったり
linux等が誰にでも使いやすい環境だったならMS市場にはならなかったかもしれない
でもまあMacもWindowsと同じ道を進んでいたら生き残っていなかったかもしれないけど
2022/03/25(金) 08:13:25.03ID:bHihdD5b
互換性重視で昔はシェア伸ばしたMSも
なぜかAppleのマネして切り捨てするようになってシェア落としてる。
2022/03/25(金) 08:32:50.33ID:Sf6AbPmi
ほんと頭悪いな・・・OS資源を独占的に確保してるでしょw
2022/03/25(金) 09:03:46.71ID:bHihdD5b
マカーはほんと馬鹿だからな
2022/03/25(金) 09:09:22.13ID:PW5qBu6I
>>718
OS資源って何?
2022/03/25(金) 09:12:25.62ID:rQC9vpY7
嫌ならLinuxでも使えば?w
2022/03/25(金) 09:15:06.51ID:6oNwnU1m
>>717
MCAの件で愛想尽かしたのに
結局ミイラ取りがミイラってやつだね
2022/03/25(金) 09:16:17.27ID:haNY4PtR
最近はGPUパススルー備えたKVMでLinuxでもほぼパフォーマンスペナ無しでWindows用ゲームできるらしいけどほんまなん?
2022/03/25(金) 09:20:09.35ID:KE5lJ15x
>>723
嘘やろ
ハイパーバイザーとゲストosの間を遷移するのにオーバーヘッドかかるやろ
いくらCPU支援機能があるからって無視はできない
2022/03/25(金) 10:53:37.87ID:6oNwnU1m
同じソフトをホストとゲストで使い比べるとやっぱ体感速度違うからな
2022/03/25(金) 12:39:31.11ID:Sf6AbPmi
apple製品は買ってないし、Native LinuxもWindowsも使ってるが、WindowsのVC++使いはスレ違いの話題をいつまで続ける気なんだ?
2022/03/25(金) 18:58:24.97ID:NAR86/dh
>>726
OS資源って何?
2022/03/25(金) 19:10:47.53ID:3+VV5Xxj
50代になると30代の2割以下の量になるらしいから大事にしろよ
2022/03/25(金) 19:30:24.85ID:5XdEy59o
ぐり@関賢太郎 航空軍事記者
https://twitter.com/gripen_ng/status/1507210000024104972
何年か前、日本から韓国へのフッ化水素輸出に制限をかける外交摩擦あったよね。
あれで韓国製のガリウム砒素半導体を輸入していたロシアへ供給が止まり、ロシアの軍用AESAレーダーの生産が遅れ、戦闘機への搭載もできなくなるドミノ倒しになっていたことに気付いてしまった。
国際社会から孤立ってこわい
https://twitter.com/5chan_nel (5ch newer account)
2022/03/26(土) 02:00:27.84ID:w1Z+3JKm
>>726
OS資源って何?
2022/03/26(土) 22:01:10.04ID:+PRSGS1Y
整数で添え字アクセス可能なコンテナの要素を自身の添え字0〜n-1で初期化したい場合どう書くのがスマート?
<algorithm>の他の手段と同様の記述スタイルで書けるならそれに統一したいのでつが、、、
やっぱ
 std::vector<int> arr((size_t)n);
 for (int i = 0; i < n; i++) { arr[i] = i; }
というふうにチョー具体的にfor文とループ変数iを手で書くのに勝る妙案無し?
2022/03/26(土) 22:09:33.63ID:RpKSs2nj
>>731 https://cpprefjp.github.io/reference/numeric/iota.html
2022/03/26(土) 22:15:39.57ID:O3+9n+yo
イオタ\(^o^)/
2022/03/26(土) 22:31:07.82ID:+PRSGS1Y
>>732
なるほど<numeric>とかヘッダファイル自体使ってなかったわチョーdクス、
2022/03/26(土) 22:42:20.07ID:QEpYloYB
イオタ\(^o^)/は草
2022/03/26(土) 22:51:45.23ID:vQB7bLSM
>>726
OS資源って何?
2022/03/26(土) 23:43:36.18ID:9q2PYIcF
また自演してるしwwwww ようやくiotaを知ったのねw
738デフォルトの名無しさん
垢版 |
2022/03/27(日) 18:49:59.41ID:lspELT3N
初歩的な質問すみません、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の使い方一応は調べてみたつもりなのですが、
どなたか教えていただけませんでしょうか。
2022/03/27(日) 18:54:07.95ID:uW5IEa4H
#include <string>

std::wstring mojimoji = L"モジモジ ///";
2022/03/27(日) 18:56:35.96ID:7vIiVU2b
>>738
単純に配列じゃなくて
wchar_t一個だけのメモリを確保してるからdelete
2022/03/27(日) 18:58:29.72ID:7vIiVU2b
>>738
あと、一個分のメモリしか確保できてないから、そこに
socketなんちゃらって文字列入れようとするとエラーになると思われる
だから
wchar_t* ShowStr = new wchar_t[200];
みたいにするのが正解か
2022/03/27(日) 18:59:23.81ID:7vIiVU2b
で、>>741の変更をした場合は
delete[] ShowStr;
になるはず
743デフォルトの名無しさん
垢版 |
2022/03/27(日) 19:31:30.48ID:lspELT3N
>>742
ありがとうございます。
おかげさまで解決できました。
コンパイル時にどれだけのメモリを確保するのかは明確に分かっていたほうがよいのですね
今日は初めてダイアログからソケットをつなげることが出来たし、やっとエラーが出なくなって
何とか枕を高くして眠れそうです。ありがとうございます。
744デフォルトの名無しさん
垢版 |
2022/03/27(日) 19:33:51.31ID:lspELT3N
>>739
wstringというものを初めて知りました。
今回はLPWSTRの必要があったので使わなかったのですが、
ワイド文字を使う上で必要な知識が増えました。
ありがとうございます。


・・・手帳持ちなんだけど就職できるといいなぁ、未経験で
2022/03/27(日) 19:45:45.04ID:uW5IEa4H
>>744
うまくいきますよーに☆
746デフォルトの名無しさん
垢版 |
2022/03/27(日) 19:52:33.76ID:lspELT3N
>>745
ありがとうございます(≧∀≦๑)ゞ
2022/03/27(日) 20:24:01.35ID:nbMAc3Vl
pythonのプラグイン作成ライブラリpybind11は今やwstringが標準
さもないとWindows対応できない
748688
垢版 |
2022/03/27(日) 21:15:33.59ID:Fwb/ewtW
>>699
ありがとうございます!
C++14までの設定でそれでいけました!
マジ黒魔術w

そしてC++20なら>>690がいけて感動w
concept神すぎる…!!
2022/03/27(日) 21:21:28.16ID:PoGWmBV8
wstringしか使えないゴミライブラリなんて使わないでいいよw いつもの自演君w
2022/03/27(日) 21:35:17.61ID:VLMZp/O7
wstring なんかいらない…普通に std:::basic_string<char16_t> とかで十分
https://ideone.com/uQKe4J

というか、wstring なんかさっさと obsolete/deprecated にすればいいのに、ほんと馬鹿ですね
2022/03/27(日) 22:00:38.95ID:rG9TE9zE
std::basic_string<TCHAR>とかはまれによくやる……
が操作や表示に_tで始まる関数を使わなければならないから
移植性とともに魂を損なわれていく気がするので
特段の理由が無い限りWin32APIの方を末尾Aので呼ぶことにしてstd::stringで通すようになった今日このごろ……

>>749
残念、自演君は私だ
2022/03/27(日) 22:07:12.24ID:nbMAc3Vl
> まれによくやる

どっちなの
2022/03/27(日) 22:08:19.23ID:PoGWmBV8
2垢でIDがうまく操作できてない感出まくってるw
2022/03/27(日) 22:10:49.45ID:rG9TE9zE
>>753の書くコードはことごとく根拠が欠けているのであろうことは想像に難くない
検証とかどこ世界の話?、レヴェルかと、
2022/03/27(日) 22:33:58.84ID:nbMAc3Vl
確かに反ワクチンとかウクライナはネオナチとかこじらせてそう
2022/03/27(日) 22:59:19.24ID:K7MWSPEs
>>751
WindowsというOSはwchar_tが標準装備であってcharを受け付ける***A はWin9xのレガシーなのだよ...

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

大体のC/C++コードは(ファイルIOですら)charがベースなので、Win32APIとの相互運用で***Wを使うことが苦痛になる
757デフォルトの名無しさん
垢版 |
2022/03/27(日) 23:25:52.46ID:QKAmAp06
Microsoftは馬鹿かと思う。
勝手にBitlockerがかかって、「この箱には鍵がかかっています。その鍵をあける番号は
箱の中にあります。」の連続。
2022/03/27(日) 23:36:32.07ID:PoGWmBV8
そんなことみんな知ってて言ってるだろw 何を今更w
通常C/C++だと低レベルな処理はプラットフォームでAPI分けるから、Windowsでは仕方なく(可能な範囲で)ワイド文字を使用する仕様にしたりすることもある、というくらいw
でもターゲットがWindowsだけだと逆に癖で文字にtypedef切ったり_T使ったりする不思議w
2022/03/27(日) 23:49:21.31ID:nbMAc3Vl
Pythonの内部コードはUTF-16らしいよ
2022/03/28(月) 02:22:28.60ID:51Y1Thh9
それも違うw
https://peps.python.org/pep-0393/
2022/03/28(月) 08:08:46.35ID:DkKihmtS
ボクが考えるWindowsスレですか、ここは。
2022/03/28(月) 08:45:03.78ID:zvnGSWPp
どうでもいいけど、黒魔術とかコンセプト神とかなんとか大袈裟な言い回し、ブログとかでよく見るんだろうけど
あまり真似しない方がいい気はする
2022/03/28(月) 08:56:12.53ID:HSBaMW3J
やたら絵文字を使いまくる頭悪そうなメールとノリが似てるね
2022/03/28(月) 11:30:00.76ID:npKEPSZJ
>>759
Pythonじゃなくてジャバスクのstringの内部表現やろ
UTF16って意外と標準採用されてるからな
至極単純にUTF8と比べてCPUパフォーマンスは良いし
2022/03/28(月) 11:35:09.55ID:4U9zlcIi
鼻から悪魔とか自分を足を撃つとか
そういう言い回し好きなアマチュアが吸い寄せられるのがC++って感じする

もちろん、仕事で嫌々使わされてる連中は除く
2022/03/28(月) 11:37:17.98ID:npKEPSZJ
>>756
標準装備っていうかカーネルがUNICODE_STRINGっていう非null terminatedな明示長stringしか扱わないからな
つまりA版APIは変換コストがかかる
2022/03/28(月) 13:30:08.02ID:HSBaMW3J
fjによく出没していた河野ってやつが言ってた
「C++はちょっと気が狂ったようなところがある言語」
あんまりあいつに同調したくないがこれは言い得て妙だ

これは何から何までキチガイ仕様ばっかりという意味ではない
たまに首をかしげる変なところがあるってことだ
2022/03/28(月) 13:39:02.76ID:yqBWM3bb
難しいコード書けても設計出来ないとなんの意味もないしな
2022/03/28(月) 15:23:35.37ID:DkKihmtS
他人が読めないコード書いてマウンティングする文化があるからな。
2022/03/28(月) 16:26:35.03ID:R1D4p1O0
>>765
それはどちらもCだろ
C++の黒魔術とかの表現は気持ち悪いと思う
2022/03/28(月) 21:04:31.59ID:f80bfIyg
>>765
それは C だ…
2022/03/28(月) 21:31:46.30ID:Uu0YihOb
色々すっきりわかりやすくなってプログラミング効率の良いRustと比べればC/C++どちらも
2022/03/29(火) 08:04:21.14ID:mWQ/GdlN
>>772
学習曲線をなだらかにしてから言いな。とりあえずNGにしとくわ。
2022/03/29(火) 08:09:47.04ID:LEuYcsU9
> 学習曲線をなだらか
C++が言うな
775デフォルトの名無しさん
垢版 |
2022/03/29(火) 09:12:38.67ID:V3Kl11Pp
学習曲線をなだらかって何
2022/03/29(火) 09:40:35.27ID:FuLLa2J8
>>765
最近買ったRust本の帯に、もう二度と自分の足を撃ちたくないならって書いてあった。何なのこれ?
2022/03/29(火) 09:40:51.62ID:UOqSecAo
学習曲線なだらかだったらいつまでたっても習熟が進まないんだよなあ
2022/03/29(火) 10:05:42.16ID:WvuxHdPq
舌触りなめらか
2022/03/29(火) 10:21:02.72ID:HFhqj5qW
ちんちんシュッシュッシュッ!
2022/03/29(火) 10:46:35.81ID:MRVYy131
>>776
何なのってFPSゲームでしょ
2022/03/29(火) 11:27:10.53ID:l/5rTAs8
>>777
絶壁だったら学習できないよ。
第一、プログラミング言語を学習したいなんて奇人は少ないだろ。普通はプログラムを作りたいだけだし。

昔Accelerated C++みたいなC++を使うための入門書があったけど、ああいうのを整備する団体とか無いんかな。
2022/03/29(火) 13:24:22.14ID:oJxqSb9h
>>776
https://qiita.com/evid/items/adfa237f4dc6b73a2b5d#fnref5
要するに自分で自分を壊すような話
2022/03/29(火) 13:36:11.92ID:owrRZ3L6
設計ヘタクソなヤツは致命的、いや、池沼的なの居るからな
Rust養成ギブスで勉強してこいカスって感じ
2022/03/29(火) 15:03:31.53ID:ijYpt7F/
>>783
Rustやったところで、Pythonのインデントスタイルの勉強と一緒でRustスタイルのコーディングしかできなくなるだけだよ。
C++のプログラム技術向上のためにRustを勉強するとか、まったく意味無い。
2022/03/29(火) 15:26:21.04ID:6kEE5hUV
>>784
その通り
しかしRustの方がプログラミング効率が良くて書きやすくて保守性も良いから
普通はC++使わなくなるよな
2022/03/29(火) 15:32:53.51ID:owrRZ3L6
グローバル変数でi宣言してるヤツとか
理由聞くと書くの面倒くさいからとか
池沼にも程がある
2022/03/29(火) 19:18:21.80ID:ijYpt7F/
>>785
スレ違い。ここに書き込むの禁止な。
下のスレに行け。
C vs C++ vs Rust Part.3
ttps://mevius.5ch.net/test/read.cgi/tech/1643289587/
2022/03/29(火) 19:46:14.12ID:LEuYcsU9
面倒だからメンバは全部public
2022/03/29(火) 20:17:40.82ID:rprUptDm
structって書けよ
2022/03/29(火) 22:21:49.66ID:JBheGd8b
structなんぞ頼らずnamespaceに全部書けよ
■ このスレッドは過去ログ倉庫に格納されています