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