!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を3行貼り付けること
次スレは>>980が立てること
無理なら細かく安価指定
※前スレ
C++相談室 part165
https://mevius.5ch.net/test/read.cgi/tech/1698705458/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
C++相談室 part166
1sage (ワッチョイ 8732-NXaD)
2025/04/26(土) 10:34:58.41ID:pbPDl6lv02デフォルトの名無しさん (ワッチョイ 1132-NXaD)
2025/04/26(土) 10:36:05.71ID:pbPDl6lv0 仲良く使ってね
3デフォルトの名無しさん (ワッチョイ b501-4ocp)
2025/04/26(土) 11:57:58.29ID:9PQ55tI10 STLでサイズがウンタラカンタラってなくなったんだね
4デフォルトの名無しさん (ワッチョイ 797c-VXNn)
2025/04/26(土) 13:02:57.57ID:90F8pztq0 あれはキチガイが勝手に貼り続けてただけでテンプレでもなんでもない
5デフォルトの名無しさん (ワッチョイ bfda-OmX0)
2025/04/29(火) 19:50:22.01ID:oiFKb7iS0 プログラムの書き方について学ぶためのサンプルコードですが、
CならLinuxGNUやBSDなど山ほどあるけど、C++の場合は定番としてどんなものがありますか?
CならLinuxGNUやBSDなど山ほどあるけど、C++の場合は定番としてどんなものがありますか?
6デフォルトの名無しさん (ワッチョイ 9ff0-8SS3)
2025/04/29(火) 20:44:07.29ID:snW2quW50 C++標準ライブラリ チュートリアル&リファレンス
っていう分厚い本読んどけば大体理解る
っていう分厚い本読んどけば大体理解る
7デフォルトの名無しさん (ワッチョイ b77c-0tm6)
2025/04/29(火) 21:19:32.60ID:d6I4gAkZ0 C++のOSSねえ
有名でコードの質がいい奴だとLLVMか?Clangも読めばコンパイラだから言語の勉強にはなるはず
規範的って意味だとBoostだけど、いきなり勧めるには技巧的で上級者向けすぎやな面白いけどね
あと有名所ならOpenCVだけどあれは汚いから真似してほしくない
有名でコードの質がいい奴だとLLVMか?Clangも読めばコンパイラだから言語の勉強にはなるはず
規範的って意味だとBoostだけど、いきなり勧めるには技巧的で上級者向けすぎやな面白いけどね
あと有名所ならOpenCVだけどあれは汚いから真似してほしくない
8デフォルトの名無しさん (ワッチョイ d7d7-7NrX)
2025/04/29(火) 23:01:06.57ID:LJmfvcqY0 Open CASCADE も汚いのでお勧めしないなぁ
9デフォルトの名無しさん (ワッチョイ b720-xasm)
2025/04/29(火) 23:56:21.35ID:qhqmYF5L0 ライブラリだと各OSに対応するためのコードだったり、ヘッダーオンリーにするためのテクニックだったりで、純粋なC++プログラムの勉強として見るとノイズが多いかもしれない
実は初心者向きの良い教材ってあんまり無いかも?
中級者以上ならBoostなどは勉強になるけど、簡単ではないし
実は初心者向きの良い教材ってあんまり無いかも?
中級者以上ならBoostなどは勉強になるけど、簡単ではないし
10デフォルトの名無しさん (ワッチョイ 9f07-VpId)
2025/04/30(水) 00:21:11.63ID:en7310Kb0 いろいろとフリーダムすぎてなあ そこがいいんだが
たとえば、ゲーム作りたかったら既存のゲームエンジン、とか、
やりたいカテゴリか近いところの、長続きしてるところの読んでみるといいかも
答えになってないが、(自分用であれ仕事であれ)使わされるのが一番早い
たとえば、ゲーム作りたかったら既存のゲームエンジン、とか、
やりたいカテゴリか近いところの、長続きしてるところの読んでみるといいかも
答えになってないが、(自分用であれ仕事であれ)使わされるのが一番早い
11デフォルトの名無しさん (ワッチョイ bf79-FBhq)
2025/04/30(水) 00:58:19.68ID:TMleEpRy0 Windowsの電卓は平易で初心者向きかも
Google系も平易な印象だけど、Googleは独自ユーティリティを多用しがちなのが難点
Google系も平易な印象だけど、Googleは独自ユーティリティを多用しがちなのが難点
12はちみつ餃子 ◆8X2XSCHEME (ワッチョイ b732-Dk0z)
2025/04/30(水) 09:16:57.03ID:THYm3xdc0 C++ は言語として特定のスタイルを強制しないという方針を持っているからプロジェクトによって構成の仕方は全く違う。
適当な数個のプロジェクトを見ても数個のスタイルがわかるというだけでしょ。
どれが良いかとか言ってないでたくさん見るしか仕方ないんじゃないかな。
入門書とかいくつかの設計指南系の本くらいは読んでる?
理念抜きで結果として出来上がってるコードを見てもわけがわからんと思う。
本はたくさん読んだほうが良い。
それと C++ は今は三年ごとに規格の改定がある。
どの版を想定するかでもかなり違う。
特に大きなターニングポイントになってるのは C++11 と C++20 だと思う。
最新の GCC で特に指定しなければ C++17 として解釈されるのでこのあたりが現在の普通という感じなはず。
適当な数個のプロジェクトを見ても数個のスタイルがわかるというだけでしょ。
どれが良いかとか言ってないでたくさん見るしか仕方ないんじゃないかな。
入門書とかいくつかの設計指南系の本くらいは読んでる?
理念抜きで結果として出来上がってるコードを見てもわけがわからんと思う。
本はたくさん読んだほうが良い。
それと C++ は今は三年ごとに規格の改定がある。
どの版を想定するかでもかなり違う。
特に大きなターニングポイントになってるのは C++11 と C++20 だと思う。
最新の GCC で特に指定しなければ C++17 として解釈されるのでこのあたりが現在の普通という感じなはず。
13デフォルトの名無しさん (アウアウウー Sa1b-Dl8r)
2025/04/30(水) 09:52:26.68ID:uCqRd3Swa >>5
wxWidgets
wxWidgets
14デフォルトの名無しさん (ワッチョイ b720-xasm)
2025/04/30(水) 12:58:39.49ID:8LRHZRl/0 Windows … というか Visual Studio だと今でもデフォルトは C++14 なんだよな
機能的には C++23 まで使えるのに
機能的には C++23 まで使えるのに
15デフォルトの名無しさん (ワッチョイ afaa-hOut)
2025/05/04(日) 16:06:14.75ID:/Tm3kYwr0 初心者スレないんですまん。
C++でvectorとsetで同じことやらすのってどうやるの?
cout << vec << endl;
cout << st << endl;
を共通で書きたいんだけど、
template?の書き方がわかんないの
C++でvectorとsetで同じことやらすのってどうやるの?
cout << vec << endl;
cout << st << endl;
を共通で書きたいんだけど、
template?の書き方がわかんないの
16はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6332-x8bn)
2025/05/04(日) 18:28:39.39ID:w7r9Yiaa0 >>15
きちんと諸々に配慮しようとすると面倒なんだけど本当にそれが出来ればよいだけならこんな感じで出来なくはない。
https://wandbox.org/permlink/2CaqGO3tiB7G9tCZ
きちんと諸々に配慮しようとすると面倒なんだけど本当にそれが出来ればよいだけならこんな感じで出来なくはない。
https://wandbox.org/permlink/2CaqGO3tiB7G9tCZ
1715 (ワッチョイ afaa-hOut)
2025/05/05(月) 16:19:33.69ID:WDPor1X6018はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6332-x8bn)
2025/05/05(月) 17:57:32.37ID:7tS1Ts+e0 >>17
まさに「諸々に配慮」と述べた部分がそれでね……。
ここで定義した operator<< と元からある operator<< の両方が char を受け取ることが可能なので
どちらを呼び出すべきか曖昧なオーバーロード (ambiguous overload) になってしまっている。
ちゃんとやる場合はここで定義する operator<< が受け取れるのはコンテナに限定しなければならない。
型に制約を付ける真っ当な方法が入ったのは C++20 からなのでそれ以前の C++ でやろうとすると回りくどいんだよ。
C++11 でなるべく簡素に書くとしたらこんな感じかな。
https://wandbox.org/permlink/Hli0dW7vNwSICQmp
まさに「諸々に配慮」と述べた部分がそれでね……。
ここで定義した operator<< と元からある operator<< の両方が char を受け取ることが可能なので
どちらを呼び出すべきか曖昧なオーバーロード (ambiguous overload) になってしまっている。
ちゃんとやる場合はここで定義する operator<< が受け取れるのはコンテナに限定しなければならない。
型に制約を付ける真っ当な方法が入ったのは C++20 からなのでそれ以前の C++ でやろうとすると回りくどいんだよ。
C++11 でなるべく簡素に書くとしたらこんな感じかな。
https://wandbox.org/permlink/Hli0dW7vNwSICQmp
19デフォルトの名無しさん (ワッチョイ a701-uYIY)
2025/05/06(火) 12:29:11.51ID:tCHDdC6b0 >template <class T>
>auto operator<<(std::ostream& os, const T& container_object)
> -> typename std::enable_if<!!sizeof(begin(std::declval<T>()) != end(std::declval<T>())), std::ostream&>::type {
横から何じゃこりゃw
>auto operator<<(std::ostream& os, const T& container_object)
> -> typename std::enable_if<!!sizeof(begin(std::declval<T>()) != end(std::declval<T>())), std::ostream&>::type {
横から何じゃこりゃw
20はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6332-6RYV)
2025/05/06(火) 12:35:30.96ID:SvTeM3j90 declval は要らんな。
もっとキッチリしたほうがいいのか簡素にしようか迷ってちょっと変な感じになってる……。
もっとキッチリしたほうがいいのか簡素にしようか迷ってちょっと変な感じになってる……。
21デフォルトの名無しさん (ワッチョイ a701-uYIY)
2025/05/06(火) 13:03:38.40ID:tCHDdC6b022はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6332-x8bn)
2025/05/06(火) 13:42:19.73ID:SvTeM3j90 >>21
関数名の前に auto を書くと仮引数の後ろに返却値の型を書けるようになる。
つまり -> から { までのところに書いてるのが返却値の型。
従来の書き方では関数の仮引数を返却値の型を決定する文脈では使えないというルールがある。
たとえば
template<class T> decltype(e) foo(const T& e) {return e;}
というようなことは出来ない。 ここで e を参照することは出来ない。
後置では返却値の型を書くところで仮引数を使ってかまわない。
template<class T> auto bar(const T& e) -> decltype(e) {return e;}
ってのはアリ。
この場合の auto は返却値の型を後置するというマークってことね。
後置にする必要がなくても後置で一貫させてるプロジェクトもたぶん結構ある。
auto がこのような用途で使えるようになったのは C++11 からなのでもう結構浸透してると思うんだけど、全く見たことないの?
!! は ! をふたつ並べてるだけ。 bool にキャストする代わりに使うイディオムなんだけど見づらいからやめたほうがよいという人も多い。
関数名の前に auto を書くと仮引数の後ろに返却値の型を書けるようになる。
つまり -> から { までのところに書いてるのが返却値の型。
従来の書き方では関数の仮引数を返却値の型を決定する文脈では使えないというルールがある。
たとえば
template<class T> decltype(e) foo(const T& e) {return e;}
というようなことは出来ない。 ここで e を参照することは出来ない。
後置では返却値の型を書くところで仮引数を使ってかまわない。
template<class T> auto bar(const T& e) -> decltype(e) {return e;}
ってのはアリ。
この場合の auto は返却値の型を後置するというマークってことね。
後置にする必要がなくても後置で一貫させてるプロジェクトもたぶん結構ある。
auto がこのような用途で使えるようになったのは C++11 からなのでもう結構浸透してると思うんだけど、全く見たことないの?
!! は ! をふたつ並べてるだけ。 bool にキャストする代わりに使うイディオムなんだけど見づらいからやめたほうがよいという人も多い。
23デフォルトの名無しさん (ワッチョイ a701-uYIY)
2025/05/06(火) 14:29:32.39ID:tCHDdC6b024はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6332-x8bn)
2025/05/06(火) 16:07:03.30ID:SvTeM3j90 >>23
> !!も分かりました(g++-12はなしで通ります)
非型テンプレートパラメータで size_t (sizeof の結果) から bool への変換 (縮小変換) は認められていないはず……
……と思ったらこれには例外があってコンパイル時計算の文脈で実際には情報が欠落しないなら OK。
つまり整数の 0 か 1 のときに限り (型の大きさとしては小さくなる変換であっても) bool に変換が可能。
> !!も分かりました(g++-12はなしで通ります)
非型テンプレートパラメータで size_t (sizeof の結果) から bool への変換 (縮小変換) は認められていないはず……
……と思ったらこれには例外があってコンパイル時計算の文脈で実際には情報が欠落しないなら OK。
つまり整数の 0 か 1 のときに限り (型の大きさとしては小さくなる変換であっても) bool に変換が可能。
25デフォルトの名無しさん (ワッチョイ 1279-k14q)
2025/05/06(火) 17:28:20.12ID:GbYxwNEQ0 非0ならtrueやないんか
26はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6332-x8bn)
2025/05/06(火) 18:05:53.77ID:SvTeM3j90 >>25
せやで。 こういうときは変換されない。
template<bool num>
class foo {};
int main(void) {
foo<2> bar;
}
通常の暗黙の変換で許されていても非型テンプレートパラメタでは縮小変換はされないので↓みたいなのも駄目。
template<unsigned char num>
class foo {};
int main(void) {
foo<1000> bar;
}
せやで。 こういうときは変換されない。
template<bool num>
class foo {};
int main(void) {
foo<2> bar;
}
通常の暗黙の変換で許されていても非型テンプレートパラメタでは縮小変換はされないので↓みたいなのも駄目。
template<unsigned char num>
class foo {};
int main(void) {
foo<1000> bar;
}
2715 (ワッチョイ afaa-hOut)
2025/05/06(火) 18:35:49.00ID:jhNAw2EC028デフォルトの名無しさん (アウアウウー Sac3-7Zak)
2025/05/06(火) 18:36:01.85ID:nZOyiL0Ra enable_ifは便利だけど使ったら負け感が半端無い
29はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6332-x8bn)
2025/05/06(火) 19:26:25.22ID:SvTeM3j90 この場合は enable_if は本来の意味で使ってないしな。
30はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6332-x8bn)
2025/05/06(火) 20:07:39.20ID:SvTeM3j90 >>27
こんな感じかな。
https://wandbox.org/permlink/IgEx8yRTGMZ2qr6U
C++20 からはイテレータの概念も再編されて range という概念で扱うのが好ましいということになり、コンテナは range の一種だったことになった。
コンテナの中のここからここまでという範囲を表すものを中心にした考え方で、コンテナ自身も range だし、コンテナの除き窓のような view も range 。
Rust とか Go で言うスライスみたいなもん。
で、テンプレート引数として受け取った T が std::ranges::range の制約を満たすものなんやでという制約を入れることによってそうじゃないものはマッチしないように出来るし、
他の operator<< の候補にマッチするものがあるのならそっちが選ばれるようになる。
こんな感じかな。
https://wandbox.org/permlink/IgEx8yRTGMZ2qr6U
C++20 からはイテレータの概念も再編されて range という概念で扱うのが好ましいということになり、コンテナは range の一種だったことになった。
コンテナの中のここからここまでという範囲を表すものを中心にした考え方で、コンテナ自身も range だし、コンテナの除き窓のような view も range 。
Rust とか Go で言うスライスみたいなもん。
で、テンプレート引数として受け取った T が std::ranges::range の制約を満たすものなんやでという制約を入れることによってそうじゃないものはマッチしないように出来るし、
他の operator<< の候補にマッチするものがあるのならそっちが選ばれるようになる。
3115 (ワッチョイ afaa-hOut)
2025/05/06(火) 21:47:53.45ID:jhNAw2EC0 >>30
ありがとうございます。
rangeはときどき見てたんですけど、ぱっと見あんまり必要性がわからなかったんですけど、こういう理由があったんですね。
これから時間があるときは、rangeを意識して書きたいと思います。
ありがとうございました
ありがとうございます。
rangeはときどき見てたんですけど、ぱっと見あんまり必要性がわからなかったんですけど、こういう理由があったんですね。
これから時間があるときは、rangeを意識して書きたいと思います。
ありがとうございました
32デフォルトの名無しさん (ワッチョイ df01-7ORQ)
2025/05/07(水) 09:06:41.19ID:pa9hjTXM0 >>29
ostreamあんま詳しくないので本来の意味じゃないってのが良くわからんかった
コンテナでなければ弾くようにしてるんだと思うけどsizeofで括ってるのは式自体が評価されないようにするため?
ostreamあんま詳しくないので本来の意味じゃないってのが良くわからんかった
コンテナでなければ弾くようにしてるんだと思うけどsizeofで括ってるのは式自体が評価されないようにするため?
33はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6332-x8bn)
2025/05/07(水) 09:38:53.26ID:jrPMMEx+0 >>32
そう。
実態としては sizeof の中の式が成立するかどうかだけが判定基準になってる。
sizeof が 0 を返すことはあり得ないわけだし sizeof の中の式が成立しないなら enable_if で判定する以前に弾かれるわけなので enable_if は判定の役に立ってない。
式を書く場所があるならなんでもよかったんだけど最終的には ostream& になってもらわないといけないので enable_if が楽だったというだけ。
そう。
実態としては sizeof の中の式が成立するかどうかだけが判定基準になってる。
sizeof が 0 を返すことはあり得ないわけだし sizeof の中の式が成立しないなら enable_if で判定する以前に弾かれるわけなので enable_if は判定の役に立ってない。
式を書く場所があるならなんでもよかったんだけど最終的には ostream& になってもらわないといけないので enable_if が楽だったというだけ。
34デフォルトの名無しさん (ササクッテロラ Spc7-7ORQ)
2025/05/07(水) 09:53:44.11ID:zHwjwbR2p あーなるほど、意味がわかった
ありがとう
ありがとう
35デフォルトの名無しさん (ワッチョイ 1202-mpUa)
2025/05/07(水) 22:31:24.20ID:OFqp/W1O0 vectorって、
宣言時に、要素数と初期値を設定できないっけ?
気持ちとしては、、
↓
vector<int> my_data(3) = { 6, 8, 44 };
宣言時に、要素数と初期値を設定できないっけ?
気持ちとしては、、
↓
vector<int> my_data(3) = { 6, 8, 44 };
36はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6332-x8bn)
2025/05/07(水) 22:42:31.19ID:jrPMMEx+037デフォルトの名無しさん (ワッチョイ a701-uYIY)
2025/05/07(水) 22:57:31.27ID:F57QgFhN038はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6332-x8bn)
2025/05/07(水) 23:14:20.16ID:jrPMMEx+0 >>35
与えている要素の個数に間違いがないことを確実にしたいというのが目的だとしたらこういう関数を定義するのはどうだろう。
https://wandbox.org/permlink/QBu2dsYRUkrMmLzC
与えている要素の個数に間違いがないことを確実にしたいというのが目的だとしたらこういう関数を定義するのはどうだろう。
https://wandbox.org/permlink/QBu2dsYRUkrMmLzC
39デフォルトの名無しさん (ワッチョイ 1202-mpUa)
2025/05/07(水) 23:14:51.64ID:OFqp/W1O040はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6332-x8bn)
2025/05/07(水) 23:25:35.43ID:jrPMMEx+0 >>39
文法の一貫性としてということ?
配列をそう定義したときの [3] は型の一部であってコンストラクタに渡す値ではないから……。
配列をそう書けるのが例外的、変則的な措置だと考えるべきだと思う。
文法の一貫性としてということ?
配列をそう定義したときの [3] は型の一部であってコンストラクタに渡す値ではないから……。
配列をそう書けるのが例外的、変則的な措置だと考えるべきだと思う。
41デフォルトの名無しさん (JP 0Hee-L4A6)
2025/05/08(木) 00:57:15.98ID:4oP42WaSH42デフォルトの名無しさん (JP 0Hee-L4A6)
2025/05/08(木) 01:50:59.67ID:4oP42WaSH はちみつさんはC++仕様策定委員なの?
委員会でそんな発言されたら困るよ。
今さらtraitsみたいなトリック
使いたくないよ。
委員会でそんな発言されたら困るよ。
今さらtraitsみたいなトリック
使いたくないよ。
43はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6332-6RYV)
2025/05/08(木) 02:01:35.71ID:aAWkv5hi044デフォルトの名無しさん (ワッチョイ 1202-mpUa)
2025/05/08(木) 03:34:36.76ID:JGiTQ1yK045はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6332-x8bn)
2025/05/08(木) 08:59:22.62ID:aAWkv5hi046デフォルトの名無しさん (JP 0Hee-L4A6)
2025/05/08(木) 11:19:39.64ID:4oP42WaSH >>43
そうでしたか。すみませんでした。
そうでしたか。すみませんでした。
47デフォルトの名無しさん (ワッチョイ 1202-mpUa)
2025/05/08(木) 19:02:02.59ID:JGiTQ1yK048はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6332-x8bn)
2025/05/08(木) 20:09:36.08ID:aAWkv5hi0 >>47
難しい (分かり難い) と感じる部分を具体的に説明できる?
難しい (分かり難い) と感じる部分を具体的に説明できる?
49デフォルトの名無しさん (ワッチョイ 1202-mpUa)
2025/05/09(金) 02:43:45.34ID:gpRG314Y0 templeteでフォボナっちみたいのって、
実際に何に使うのかね…?
template<int n>
struct fibonacci
{
static constexpr int value = fibonacci<n-1>::value + fibonacci<n-2>::value;
};
実際に何に使うのかね…?
template<int n>
struct fibonacci
{
static constexpr int value = fibonacci<n-1>::value + fibonacci<n-2>::value;
};
50デフォルトの名無しさん (ワッチョイ af58-Enlg)
2025/05/09(金) 07:07:00.89ID:+l+evNW7051はちみつ餃子 ◆8X2XSCHEME (ワッチョイ cf30-6RYV)
2025/05/09(金) 09:22:27.26ID:NaCqAF6G0 >>49
暗号関係などで用途はあると思うけど今なら関数 (costexpr) で定義したほうがいいな。
暗号関係などで用途はあると思うけど今なら関数 (costexpr) で定義したほうがいいな。
52デフォルトの名無しさん (ワッチョイ f7a6-b4kn)
2025/05/09(金) 11:24:03.52ID:3QJ66PDO053デフォルトの名無しさん (ワッチョイ 637c-pXdp)
2025/05/09(金) 15:56:00.48ID:z5xnEJE80 ボレロさんが生きてた頃に比べるとつまんなくなったなconstexprさん
54デフォルトの名無しさん (ワッチョイ 1202-mpUa)
2025/05/09(金) 16:41:56.66ID:gpRG314Y055デフォルトの名無しさん (ワッチョイ 1202-mpUa)
2025/05/09(金) 16:43:37.53ID:gpRG314Y056はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6332-6RYV)
2025/05/09(金) 16:47:27.64ID:U8gSLCWq0 constexpr に特有のトリックは constexpr の制限故に生まれたのだから緩和されれば気合いの入った取り組みも要らんようになる。
真っ当な進歩なので文句は言えんがつまらんというのはわかる。
真っ当な進歩なので文句は言えんがつまらんというのはわかる。
57はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6332-6RYV)
2025/05/09(金) 16:53:00.47ID:U8gSLCWq0 >>55
する。
const をつけて定義する変数の初期化子が定数式であるときその変数も定数になるというルールがある。
つまり初期化子が定数式なら const 変数と constexpr 変数は同一の効果をもつ。
する。
const をつけて定義する変数の初期化子が定数式であるときその変数も定数になるというルールがある。
つまり初期化子が定数式なら const 変数と constexpr 変数は同一の効果をもつ。
58デフォルトの名無しさん (ワッチョイ 1202-mpUa)
2025/05/09(金) 20:05:51.01ID:gpRG314Y059デフォルトの名無しさん (ワッチョイ 1202-mpUa)
2025/05/09(金) 20:07:04.42ID:gpRG314Y060デフォルトの名無しさん (ワッチョイ 928b-0urV)
2025/05/09(金) 21:48:50.36ID:vpEUNnGu0 あの熱意で平均寿命まで生きていれば・・・
61はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 6332-6RYV)
2025/05/10(土) 12:01:09.18ID:Mv0kFcWv0 定数まわりはググったり ChatGPT に質問したりしても理解しにくいんじゃないかな。
「定数」という言葉が違う意味で使われていてそれらがひとつの解説に混在したりするのが意味不明になる原因だと思う。
・なんか決め打ちの値という意味
・変更できない変数の意味
・C++ 規格用語としての定数の意味
「定数」という言葉が違う意味で使われていてそれらがひとつの解説に混在したりするのが意味不明になる原因だと思う。
・なんか決め打ちの値という意味
・変更できない変数の意味
・C++ 規格用語としての定数の意味
62デフォルトの名無しさん (アウアウウー Sac3-7Zak)
2025/05/10(土) 12:14:05.67ID:12iOKYOza constant number
fixed number
magic number
fixed number
magic number
63デルフォトの名無し (ワッチョイ f34b-k+y7)
2025/05/11(日) 19:59:16.83ID:8gkdAC4l0 RustのCargo的なツールってC++にありますか...?
ビルド、依存関係管理等が全部できるオールインワンなやつです。
ビルド、依存関係管理等が全部できるオールインワンなやつです。
64はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f332-ZIVz)
2025/05/11(日) 20:12:58.46ID:krziBUoq0 >>63
しいていえば Conan が近いと思うがビルド自体は指定したビルドツールに下請けさせる構造になってる。
プロジェクトのビルドをする仕組みが多用なので既存のプロジェクトを Conan の管理化に入れるといった状況を考えると C++ 的にはこうなるのは仕方がない……。
C/C++ では OS (ディストリビューション) のパッケージマネージャでライブラリを管理するのが普通だったので言語の側で統括的に扱うツールという文化が欠けてる。
しいていえば Conan が近いと思うがビルド自体は指定したビルドツールに下請けさせる構造になってる。
プロジェクトのビルドをする仕組みが多用なので既存のプロジェクトを Conan の管理化に入れるといった状況を考えると C++ 的にはこうなるのは仕方がない……。
C/C++ では OS (ディストリビューション) のパッケージマネージャでライブラリを管理するのが普通だったので言語の側で統括的に扱うツールという文化が欠けてる。
65デルフォトの名無し (ワッチョイ f34b-k+y7)
2025/05/11(日) 20:18:54.81ID:8gkdAC4l066デフォルトの名無しさん (ワッチョイ 03a6-XCeo)
2025/05/11(日) 20:21:24.40ID:WWvVAeL50 OS提供のヘッダーファイルと連携しないといけないからね
rustだってOSのAPIとして使われるようになったら今の形のままでは済まされないはず
rustだってOSのAPIとして使われるようになったら今の形のままでは済まされないはず
67デフォルトの名無しさん (ワッチョイ f34b-k+y7)
2025/05/11(日) 20:25:47.11ID:8gkdAC4l068デフォルトの名無しさん (ワッチョイ 03a6-XCeo)
2025/05/11(日) 20:34:00.81ID:WWvVAeL5069デフォルトの名無しさん (ワッチョイ f34b-k+y7)
2025/05/11(日) 20:42:23.09ID:8gkdAC4l070デフォルトの名無しさん (ワッチョイ 03a6-XCeo)
2025/05/11(日) 20:58:44.05ID:WWvVAeL50 別に便利ツール自体がないわけではなく、ライブラリはOS側のパッケージマネージャやcanonやバージョン管理ツールの機能等で揃えて
ビルドはcmakeというメタビルドツールで各OSの持つビルドツール向けの入力ファイルを生成したりということはする
統一感には欠けるしばらばらのものを組み合わせてるから躓く可能性もずっと高いけども
ビルドはcmakeというメタビルドツールで各OSの持つビルドツール向けの入力ファイルを生成したりということはする
統一感には欠けるしばらばらのものを組み合わせてるから躓く可能性もずっと高いけども
71デフォルトの名無しさん (ワッチョイ f34b-k+y7)
2025/05/11(日) 21:11:16.07ID:8gkdAC4l072デフォルトの名無しさん (ワッチョイ f3d0-stkm)
2025/05/11(日) 21:16:18.20ID:/xxB2yrb0 あくまで個人の意見だけど、パッケージマネージャーは conan より vcpkg の方が好き
conan はそれ自体が Python のパッケージなので、「リポジトリのルートに Python の仮想環境 (venv) を作る → 仮想環境にConan をインストールする → C++ のライブラリを管理する」の流れになるのがね…って気持ちになるかも
どちらにせよ conan や vcpkg は外部ライブラリの管理だけに使うもので、ビルドは cmake を使う
C++だとライブラリ間に依存関係があるものは少ないから、 Git のサブモジュールを使うとか、 clone したソースファイルをそのままプロジェクトに入れるとかする方法もある (綺麗ではないけど)
PythonのpipやRustのCargoがやってるような、バージョンを考慮した依存の解決はしなくて済むことが多い
conan はそれ自体が Python のパッケージなので、「リポジトリのルートに Python の仮想環境 (venv) を作る → 仮想環境にConan をインストールする → C++ のライブラリを管理する」の流れになるのがね…って気持ちになるかも
どちらにせよ conan や vcpkg は外部ライブラリの管理だけに使うもので、ビルドは cmake を使う
C++だとライブラリ間に依存関係があるものは少ないから、 Git のサブモジュールを使うとか、 clone したソースファイルをそのままプロジェクトに入れるとかする方法もある (綺麗ではないけど)
PythonのpipやRustのCargoがやってるような、バージョンを考慮した依存の解決はしなくて済むことが多い
73はちみつ餃子 ◆8X2XSCHEME (ワッチョイ f332-G5I0)
2025/05/11(日) 21:17:42.17ID:krziBUoq0 色々と事情はあるけどファイル数個で収まる程度 (初心者が書く程度) のプログラムならビルドツールがどうこう考える必要もないよ。コンパイラドライバを呼び出せばそれで終わり。
ファイルが増えたりサポートする実行環境が増えて手に負えなくなったときに続きを考えたら良い。
ファイルが増えたりサポートする実行環境が増えて手に負えなくなったときに続きを考えたら良い。
74デフォルトの名無しさん (ワッチョイ f3d0-stkm)
2025/05/11(日) 21:17:53.90ID:/xxB2yrb0 リンク先の画像見てのようなミームがあるけど、残念ながらC++は割と本当にこの通りなんだよね…
Rustがめっちゃ楽なのはよく分かる
https://www.reddit.com/r/ProgrammerHumor/comments/1hnfuvk/whyidliketoavoidusingcpp/
Rustがめっちゃ楽なのはよく分かる
https://www.reddit.com/r/ProgrammerHumor/comments/1hnfuvk/whyidliketoavoidusingcpp/
75デフォルトの名無しさん (ワッチョイ 03a6-XCeo)
2025/05/11(日) 22:02:05.72ID:WWvVAeL50 自分の手元でさえビルドできればそれでいいなら統合開発環境に任せてしまう手も。何も考えなくても1クリックで最適にビルドしてくれるよ
76デフォルトの名無しさん (ワッチョイ 6f51-c72B)
2025/05/11(日) 22:18:31.15ID:jee+W1o20 c++やるなら苦労経験した方がええやろ
77デフォルトの名無しさん (アウアウウー Sa67-lDqI)
2025/05/12(月) 11:10:35.53ID:zCv6/zTua >>74
まるでCargoでbuildが絶対失敗しないかの様な言い草ですね
まるでCargoでbuildが絶対失敗しないかの様な言い草ですね
78デフォルトの名無しさん (アウアウウー Sa67-lDqI)
2025/05/12(月) 11:11:51.96ID:zCv6/zTua >>75
C++が初めてならそれで良いと思う
C++が初めてならそれで良いと思う
レスを投稿する
ニュース
- 橋下徹氏 外務省幹部の訪中受け「口だけ番長」へ痛烈指摘 「喧嘩は日本の完敗…なんとかっこ悪い日本か」 [冬月記者★]
- 【外国人問題】小野田紀美担当相「不法就労や不法滞在は許さない」 [シャチ★]
- 【野球】井端監督 大谷翔平、山本由伸らのWBCへの参加 「1日も早く返事ほしい」「待っててといっても、国内組が遅くなってしまう」★3 [冬月記者★]
- 経団連会長、日中は建設的対話を 経済3団体が高市首相と初会談も日中関係は話題に登らず… [BFU★]
- 中国で「クレしん」公開延期 対日報復、エンタメに波及 [蚤の市★]
- 【映画】『クレヨンしんちゃん』 中国で公開延期 対日報復、エンタメに波及 [冬月記者★]
- Xのネトウヨは大体高齢独身。40過ぎて独身だと例外なく狂うって本当だったんだなと思う [805596214]
- 女の子に生まれ変わったらやりたいこと🍓🍫💄❤ [856698234]
- 有識者「高市総理が発言を撤回したり、辞職するしかないと言っている人は、それで日中関係が今まで通りになると思ってる?」 [834922174]
- 日経時間外、5万円割れ 垂直落下始まる [402859164]
- ウッドデッキで調子こいてたやついたじゃん
- えんやすー
