次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part137 (正しくはpart138)
http://mevius.5ch.net/test/read.cgi/tech/1535353320/
C++相談室 part139
https://mevius.5ch.net/test/read.cgi/tech/1538755188/
C++相談室 part140
https://mevius.5ch.net/test/read.cgi/tech/1547326582/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.103【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1530384293/
■長いソースを貼るときはここへ。■
http://codepad.org/
https://ideone.com/
[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
----- テンプレ ここまで -----
-
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
C++相談室 part141
■ このスレッドは過去ログ倉庫に格納されています
2019/02/22(金) 03:07:43.52ID:MgOIx7iK
412デフォルトの名無しさん
2019/03/17(日) 01:47:31.21ID:7ciqStwp413デフォルトの名無しさん
2019/03/17(日) 01:58:32.33ID:ADoP4x2u テンプレートはヘッダに全部書かなきゃいかんのなんとかならんか?
414デフォルトの名無しさん
2019/03/17(日) 02:06:35.73ID:NYZE0cFr 原理上どうにもならない
415デフォルトの名無しさん
2019/03/17(日) 02:10:16.54ID:7ciqStwp テンプレートの分割コンパイルは一度実装されたが1年がかりの複雑な仕事になったし
あまりに複雑すぎて普及に至っていないというようなことがプログラミング言語C++で読んだ記憶、
しかし、importキーワードがC++の予約語であるうちはまだ希望がある
あまりに複雑すぎて普及に至っていないというようなことがプログラミング言語C++で読んだ記憶、
しかし、importキーワードがC++の予約語であるうちはまだ希望がある
416デフォルトの名無しさん
2019/03/17(日) 02:10:32.44ID:Jta37aFk FILE* fp は 標準のfgetc()の実行速度が遅くて残念。バッファリングしている甲斐がない。
417デフォルトの名無しさん
2019/03/17(日) 02:26:35.34ID:UT79+Nc/ 使いたい型決まっているなら別にできるだろ?
ヘッダで宣言だけ書いて、ソースで定義と明示的インスタンス化すればいいだけ
ヘッダで宣言だけ書いて、ソースで定義と明示的インスタンス化すればいいだけ
418デフォルトの名無しさん
2019/03/17(日) 02:34:45.67ID:61bjcvzF 3大C++無限ループ話題
テンプレート実装の分割記述
getsetの実装
あと一つは?
テンプレート実装の分割記述
getsetの実装
あと一つは?
419デフォルトの名無しさん
2019/03/17(日) 03:18:11.89ID:4v9XGq5+ 多重ループの抜け方
420デフォルトの名無しさん
2019/03/17(日) 03:19:37.14ID:XP0TJBl2 STLにツリーがない理由を教えてください。
421デフォルトの名無しさん
2019/03/17(日) 04:14:30.81ID:OzxlZzXh あるクラスが非トリビアルなコピーコンストラクタをもっていることを検出したい
そのクラスのメンバの型が非トリビアルなコピーコンストラクタを持っていたとしても。
そのクラスのメンバの型が非トリビアルなコピーコンストラクタを持っていたとしても。
422デフォルトの名無しさん
2019/03/17(日) 06:02:45.37ID:NYZE0cFr >>418
メモリが云々
メモリが云々
423デフォルトの名無しさん
2019/03/17(日) 06:48:43.74ID:WBoQCy0z >>413
テンプレートを抜き出してヘッダーファイルを生成するプリプリプロセッサを作ればいい
テンプレートを抜き出してヘッダーファイルを生成するプリプリプロセッサを作ればいい
424デフォルトの名無しさん
2019/03/17(日) 08:23:20.60ID:h3PfG3Ac >>421
トリビアルコピー出来ないことを検出したいならis_trivially_copyableで充分だけどそれ以上のことがしたいの?
トリビアルコピー出来ないことを検出したいならis_trivially_copyableで充分だけどそれ以上のことがしたいの?
425デフォルトの名無しさん
2019/03/17(日) 08:28:29.93ID:qh1L90Cw426デフォルトの名無しさん
2019/03/17(日) 08:33:05.90ID:NYZE0cFr 名人様一名いらっしゃいました
427デフォルトの名無しさん
2019/03/17(日) 11:20:51.42ID:2Lg7N/Z5 >>411
> 個数の型をdoubleにした特殊化テンプレートを書いてわざとエラーにするとか、
そういうときはdelete指定が使えるんじゃね?
というかis_floating_pointとかで弾いた方がいいとも思うけど
> 個数の型をdoubleにした特殊化テンプレートを書いてわざとエラーにするとか、
そういうときはdelete指定が使えるんじゃね?
というかis_floating_pointとかで弾いた方がいいとも思うけど
428デフォルトの名無しさん
2019/03/17(日) 12:03:09.87ID:UT79+Nc/429デフォルトの名無しさん
2019/03/17(日) 13:22:57.65ID:UT79+Nc/ variadicだた
430デフォルトの名無しさん
2019/03/17(日) 13:42:47.24ID:XP0TJBl2 バリスティック・テンプルね。
431デフォルトの名無しさん
2019/03/17(日) 15:09:36.00ID:WBoQCy0z >>425
サンプルにまでマウントするとかw
サンプルにまでマウントするとかw
432デフォルトの名無しさん
2019/03/17(日) 15:29:33.79ID:XP0TJBl2 マウントの定義を教えてください。
433デフォルトの名無しさん
2019/03/17(日) 16:01:22.88ID:Ymi5ijHL 明確な定義があるわけじゃないけど、主に「勘違いした高卒が高等な他人を見下してること、もしくはその様」を指す語としてつかわれてんじゃないの
434デフォルトの名無しさん
2019/03/17(日) 21:10:58.21ID:NYZE0cFr >>432
意識高い系
意識高い系
435KAC
2019/03/17(日) 21:23:45.76ID:nO6ODsyT436デフォルトの名無しさん
2019/03/17(日) 21:42:19.60ID:2Lg7N/Z5 >>436
誰?
誰?
438デフォルトの名無しさん
2019/03/17(日) 22:22:05.53ID:VD3ReUoA オープンソース化されたWindowsの電卓を見たが、クッソ綺麗でモダンなコードだな
439デフォルトの名無しさん
2019/03/17(日) 22:25:37.54ID:NYZE0cFr 多分7に入ってた電卓とは別物だな
440デフォルトの名無しさん
2019/03/17(日) 23:22:31.89ID:0FN5yhQH441デフォルトの名無しさん
2019/03/18(月) 00:13:57.67ID:HNvbYtsL Windowsカーネルのオープンソース化待ってます
442デフォルトの名無しさん
2019/03/18(月) 05:32:24.67ID:+E07qlDR sort関数の比較関数を、クラスのメンバ関数として定義すると invalid use of non-static member function というエラーが出ます。
なぜこれは禁止されるのでしょうか。
また、どうやって解決したら良いですか。
なぜこれは禁止されるのでしょうか。
また、どうやって解決したら良いですか。
443デフォルトの名無しさん
2019/03/18(月) 05:33:36.55ID:HNvbYtsL エラーメッセージ読みなよ
444デフォルトの名無しさん
2019/03/18(月) 06:41:53.05ID:8TZ/BLJn 理屈を知ってる人には当然だけど、初めての人は混乱する部分じゃないかな。
sort で使う比較関数は色んな形で宣言できるけど、宣言する場所によって
エラーにならずに使える関数の形式が違うってやつ。
>>442 メンバ関数にした比較関数のプロトタイプ宣言はどんな感じ?
sort で使う比較関数は色んな形で宣言できるけど、宣言する場所によって
エラーにならずに使える関数の形式が違うってやつ。
>>442 メンバ関数にした比較関数のプロトタイプ宣言はどんな感じ?
445デフォルトの名無しさん
2019/03/18(月) 08:08:37.98ID:HNvbYtsL 非staticメンバをstaticのように使おうとしたときに出るエラーだからsortとか関係ない
Class::funcをsortに入れたんでしょ
Class().funcとするかfuncをstaticにするだけ
Class::funcをsortに入れたんでしょ
Class().funcとするかfuncをstaticにするだけ
446デフォルトの名無しさん
2019/03/18(月) 08:49:38.19ID:fJqFZa8b 今時はClass().funcでいけるんすか
447デフォルトの名無しさん
2019/03/18(月) 09:58:55.92ID:7+YzgLjV Class::funcってstaticじゃないの?
448デフォルトの名無しさん
2019/03/18(月) 10:42:04.28ID:9EOa0iNV ->*みたいな書き方の意義がわかったら一人前どすな
449デフォルトの名無しさん
2019/03/18(月) 11:13:12.39ID:27d4/ixp ちなみにどんな意義があるの?
450デフォルトの名無しさん
2019/03/18(月) 19:22:09.39ID:SgtRGl5R451デフォルトの名無しさん
2019/03/18(月) 20:05:14.79ID:c3AGzLzz 結局その場でラムダ式書くのが一番わかり易いんだよね
453デフォルトの名無しさん
2019/03/18(月) 21:20:34.54ID:lCR32A1k エクセルで使われているようなGUIにちょっとしたアニメーションをつけるには何使えばいい?
455デフォルトの名無しさん
2019/03/18(月) 21:43:42.87ID:lCR32A1k >>454
例えば四角形の座標の終点の値と移動にかかる時間をするだけでヌルッと動いてくれる機能があるやつがいいです
例えば四角形の座標の終点の値と移動にかかる時間をするだけでヌルッと動いてくれる機能があるやつがいいです
456デフォルトの名無しさん
2019/03/18(月) 21:45:05.39ID:ok5NeesM 普通にcのsort関数使えばいいのに。
キャストしたら負けとでも思ってんのかね。
キャストしたら負けとでも思ってんのかね。
457デフォルトの名無しさん
2019/03/18(月) 21:59:25.97ID:MtU5H+Zb >>455
cocos2d
cocos2d
458デフォルトの名無しさん
2019/03/18(月) 22:47:37.12ID:DisgVN8i std::initializer_list<int> l()
{
return std::initializer_list<int>{1,2,3};
}
std::vector<int> v()
{
return std::vector<int>{1,2,3};
}
int main()
{
for(auto i : l()){
std::cout << i << endl;
}
for(auto i : v()){
std::cout << i << endl;
}
}
0
0
0
1
2
3
なんで?
{
return std::initializer_list<int>{1,2,3};
}
std::vector<int> v()
{
return std::vector<int>{1,2,3};
}
int main()
{
for(auto i : l()){
std::cout << i << endl;
}
for(auto i : v()){
std::cout << i << endl;
}
}
0
0
0
1
2
3
なんで?
459デフォルトの名無しさん
2019/03/18(月) 22:56:40.87ID:bBcTS09+460デフォルトの名無しさん
2019/03/18(月) 23:23:21.73ID:qPN/SC1k461デフォルトの名無しさん
2019/03/18(月) 23:28:12.28ID:c3AGzLzz qsort「おっワイの出番か?」
462デフォルトの名無しさん
2019/03/19(火) 00:00:01.33ID:V3eHYYxi cのsortってラムダ渡せないし、ワザワザ面倒くさい記述してまで使う意味無いだろう。
463デフォルトの名無しさん
2019/03/19(火) 00:37:48.08ID:wfF3ncvB template<typename T>
T func(T a){
}
という関数の中身として、T が int なら a*2 を返し、T が double ならa/2 を返し、それ以外なら a を返す、という処理にしたい場合どう書いたら良いのでしょうか。
関数ごと特殊化する方法があるのは勉強したのですが、一行分の処理を特殊化するために関数ごと特殊化するべきなのでしょうか。
簡単化のため、必要さが全くない例になっていますがよろしくお願いします。
T func(T a){
}
という関数の中身として、T が int なら a*2 を返し、T が double ならa/2 を返し、それ以外なら a を返す、という処理にしたい場合どう書いたら良いのでしょうか。
関数ごと特殊化する方法があるのは勉強したのですが、一行分の処理を特殊化するために関数ごと特殊化するべきなのでしょうか。
簡単化のため、必要さが全くない例になっていますがよろしくお願いします。
464デフォルトの名無しさん
2019/03/19(火) 00:43:22.56ID:fW/dBWxG STLが天才なのは分かったけど、遅くなりそうなのも分かってしまった。
465デフォルトの名無しさん
2019/03/19(火) 00:49:23.69ID:fW/dBWxG466デフォルトの名無しさん
2019/03/19(火) 00:54:54.54ID:V3eHYYxi >>463
簡単化しすぎて何を質問したいのかよくわからない
その例の程度の処理なら、intとdoubleの関数をオーバーロードして、template関数でデフォルトの処理も書けばいい
intとdoubleをどうしてもtemplate化したかったら特殊化で書けばいい
前後に長い共通処理がある場合の一部式だけ個別にしたいなら、関数オブジェクトで式を引数にとる補助template関数作って、上記手法で型毎にlambdaで式を変えて補助関数を呼び分ければいい
簡単化しすぎて何を質問したいのかよくわからない
その例の程度の処理なら、intとdoubleの関数をオーバーロードして、template関数でデフォルトの処理も書けばいい
intとdoubleをどうしてもtemplate化したかったら特殊化で書けばいい
前後に長い共通処理がある場合の一部式だけ個別にしたいなら、関数オブジェクトで式を引数にとる補助template関数作って、上記手法で型毎にlambdaで式を変えて補助関数を呼び分ければいい
467デフォルトの名無しさん
2019/03/19(火) 00:56:32.83ID:wfF3ncvB >>466
特殊化する部分を関数として切り出して特殊化すれば良いということでしょうか。
特殊化する部分を関数として切り出して特殊化すれば良いということでしょうか。
468デフォルトの名無しさん
2019/03/19(火) 06:48:59.95ID:smCJKSpo >>450
まずは、エラーなくコンパイルが通って実行できるまで。
単純には、比較関数をクラスの外に出して「メンバ関数じゃない関数」にする。
たぶんソートしたいクラス中には比較する文字列以外のメンバもあるだろうから、
class myclass {
public:
string s; // 比較対象の文字列
int other; // それ以外のメンバ例
... // 他にもメンバ色々
};
こんな感じだと思う。
比較関数は、2つの myclass 型のオブジェクトのメンバ s 同士を比較するから、
bool mycomp(const myclass& a, const myclass& b)
{
return a.s < b.s; // 辞書式の昇順
}
まずは、エラーなくコンパイルが通って実行できるまで。
単純には、比較関数をクラスの外に出して「メンバ関数じゃない関数」にする。
たぶんソートしたいクラス中には比較する文字列以外のメンバもあるだろうから、
class myclass {
public:
string s; // 比較対象の文字列
int other; // それ以外のメンバ例
... // 他にもメンバ色々
};
こんな感じだと思う。
比較関数は、2つの myclass 型のオブジェクトのメンバ s 同士を比較するから、
bool mycomp(const myclass& a, const myclass& b)
{
return a.s < b.s; // 辞書式の昇順
}
469468
2019/03/19(火) 06:54:39.65ID:smCJKSpo あるいは >>468 の段階はすでに通過してて、
「今度は比較関数をクラスのメンバ関数にしてみよう」と思ったのかな。
bool mycomp(string a, string b);
このプロトタイプでクラスの「staticでないメンバ関数」にすると、
その関数はクラスのオブジェクトを介して obj.mycomp((string)a, (string)b)
という形で呼び出さなきゃならないのよ。
ところが std::sort() が比較関数を呼び出す場合は
どのオブジェクトとも関係ない mycomp((string)a, (string)b) を呼ぼうとする。
「クラスのメンバだけど、クラスの個々のオブジェクトからは独立した関数」に
するために、関数の宣言に static を指定する。
class myclass {
public:
string s; // 比較対象の文字列
int other; // それ以外のメンバ例
... // 他にもメンバ色々
static bool mycomp(const myclass& a, const myclass& b); // 比較関数
};
(「改行多すぎ」につき、もう一回だけつづく)
「今度は比較関数をクラスのメンバ関数にしてみよう」と思ったのかな。
bool mycomp(string a, string b);
このプロトタイプでクラスの「staticでないメンバ関数」にすると、
その関数はクラスのオブジェクトを介して obj.mycomp((string)a, (string)b)
という形で呼び出さなきゃならないのよ。
ところが std::sort() が比較関数を呼び出す場合は
どのオブジェクトとも関係ない mycomp((string)a, (string)b) を呼ぼうとする。
「クラスのメンバだけど、クラスの個々のオブジェクトからは独立した関数」に
するために、関数の宣言に static を指定する。
class myclass {
public:
string s; // 比較対象の文字列
int other; // それ以外のメンバ例
... // 他にもメンバ色々
static bool mycomp(const myclass& a, const myclass& b); // 比較関数
};
(「改行多すぎ」につき、もう一回だけつづく)
470468
2019/03/19(火) 06:57:01.64ID:smCJKSpo (>>469 の続き、長々とすまぬ)
関数の定義(クラス定義の外に書く場合)はこんな感じ。
bool myclass::mycomp(const myclass& a, const myclass& b)
{
return a.s < b.s; // 辞書式の昇順
}
myclass のメンバ関数だと明示するために myclass:: をつけることと、
定義の方には static をつけない、てところが注意点。
std::sort() で使う時は、
std::sort(std::begin(objs), std::end(objs), myclass::mycomp);
「比較関数には myclass のメンバ関数の mycomp() を使ってくれ」と明示。
…する必要が(俺の環境では)あるんだけど、myclass 同士を比較することから、
自動的に myclass のメンバ関数も候補に入れてくれても良さそうな気がする。
なんでダメなんだろ?
関数の定義(クラス定義の外に書く場合)はこんな感じ。
bool myclass::mycomp(const myclass& a, const myclass& b)
{
return a.s < b.s; // 辞書式の昇順
}
myclass のメンバ関数だと明示するために myclass:: をつけることと、
定義の方には static をつけない、てところが注意点。
std::sort() で使う時は、
std::sort(std::begin(objs), std::end(objs), myclass::mycomp);
「比較関数には myclass のメンバ関数の mycomp() を使ってくれ」と明示。
…する必要が(俺の環境では)あるんだけど、myclass 同士を比較することから、
自動的に myclass のメンバ関数も候補に入れてくれても良さそうな気がする。
なんでダメなんだろ?
471デフォルトの名無しさん
2019/03/19(火) 07:25:56.87ID:aaAbvqyx たかがソート一つ実行するのにこれってやっぱc++は失敗しとるわ。。
472デフォルトの名無しさん
2019/03/19(火) 07:30:30.93ID:/K8ycOQq どの言語も似たようなもんだろ
473デフォルトの名無しさん
2019/03/19(火) 07:31:18.45ID:K4E5ztRO >>468-470
丁寧に教えてくださりありがとうございます。
今のところは、>>468に書かれているようにクラスの外に出す、という方針で対応しておりました。
クラスの中で static をつけて宣言をする、というのが元々やりたかったことに一番近いように思います。重ね重ねありがとうございます。
>>470
> std::sort() で使う時は、
> std::sort(std::begin(objs), std::end(objs), myclass::mycomp);
> 「比較関数には myclass のメンバ関数の mycomp() を使ってくれ」と明示。
これは、mycomp() をクラス内で非static に宣言したときにも使えますか。
それとも、クラスの外で
bool myclass::mycomp(const myclass& a, const myclass& b)
{
return a.s < b.s; // 辞書式の昇順
}
流に宣言、定義した場合に限りますか。
丁寧に教えてくださりありがとうございます。
今のところは、>>468に書かれているようにクラスの外に出す、という方針で対応しておりました。
クラスの中で static をつけて宣言をする、というのが元々やりたかったことに一番近いように思います。重ね重ねありがとうございます。
>>470
> std::sort() で使う時は、
> std::sort(std::begin(objs), std::end(objs), myclass::mycomp);
> 「比較関数には myclass のメンバ関数の mycomp() を使ってくれ」と明示。
これは、mycomp() をクラス内で非static に宣言したときにも使えますか。
それとも、クラスの外で
bool myclass::mycomp(const myclass& a, const myclass& b)
{
return a.s < b.s; // 辞書式の昇順
}
流に宣言、定義した場合に限りますか。
474デフォルトの名無しさん
2019/03/19(火) 07:33:59.57ID:LjcR+vA2 何のために非staticにこだわるんだ?
メンバにアクセスしないならstaticつけとけよ
メンバにアクセスしないならstaticつけとけよ
475デフォルトの名無しさん
2019/03/19(火) 08:36:28.37ID:I3ez8Qch 比較関数をメンバ関数としてクラスに内在させるのが良くない
外部化するか、演算子オーバーロードする
どちらかと言うと比較関数を作らずに大小関係を定義する言語だ
実は、関数やクラスの間の包含関係がある
クラスを比較する関数はクラスの外部におかれるべきであって、メンバ関数にするのは筋が悪い
クラス内部に置くなら大小関係の定義にすべきだ
この手の階層関係は、規格書にもどんな教科書にも一切書かれてないけど、暗黙のうちに了解されている
外部化するか、演算子オーバーロードする
どちらかと言うと比較関数を作らずに大小関係を定義する言語だ
実は、関数やクラスの間の包含関係がある
クラスを比較する関数はクラスの外部におかれるべきであって、メンバ関数にするのは筋が悪い
クラス内部に置くなら大小関係の定義にすべきだ
この手の階層関係は、規格書にもどんな教科書にも一切書かれてないけど、暗黙のうちに了解されている
476デフォルトの名無しさん
2019/03/19(火) 09:31:11.81ID:wYd+ZeEZ 対称な演算子をインスタンスメンバにするのはセンス無いね
477デフォルトの名無しさん
2019/03/19(火) 15:31:26.82ID:Pb8DX7io >>463
template <typename T>
T func(T a) {
if constexpr (std::is_same_v<T, int>) return a * 2;
else if constexpr (std::is_same_v<T, double>) return a / 2;
else return a;
}
template <typename T>
T func(T a) {
if constexpr (std::is_same_v<T, int>) return a * 2;
else if constexpr (std::is_same_v<T, double>) return a / 2;
else return a;
}
478デフォルトの名無しさん
2019/03/19(火) 16:57:51.01ID:W9RsgnS5 namespaceを活用しろ
479デフォルトの名無しさん
2019/03/19(火) 17:11:35.93ID:HTVBHQBE >>477
これの方が関数として切り出して特殊化するより好きな見た目です
これの方が関数として切り出して特殊化するより好きな見た目です
480デフォルトの名無しさん
2019/03/19(火) 21:29:30.46ID:bWZzZfFH >>477
それだと実行時に判断コストがかかるじゃん
それだと実行時に判断コストがかかるじゃん
481デフォルトの名無しさん
2019/03/19(火) 21:29:55.51ID:QA3viZTS if constexprってtypeidで情報取ってきて比較するみたいなオーバーヘッドが0になりますか?
482デフォルトの名無しさん
2019/03/19(火) 21:33:24.72ID:Nfgw9yWF おじさん久々にC++の仕事受けたんだけど
色々進化してて面食らってます
今、右辺値参照っての勉強中なんだけど
ムーブコンストラクタとかはへーへーほーほー言いながら何となく分かり始めた
んだけどさ、
int &&x = 2; // ok <-これだけ使い途が分からん
ローカル変数の右辺値参照て何に使うん?
実験してみた限り、勝手にムーブとかしてくれるわけでもなさそうだし
ローカル変数に&&付いてると何に使えてんな時便利なの?
色々進化してて面食らってます
今、右辺値参照っての勉強中なんだけど
ムーブコンストラクタとかはへーへーほーほー言いながら何となく分かり始めた
んだけどさ、
int &&x = 2; // ok <-これだけ使い途が分からん
ローカル変数の右辺値参照て何に使うん?
実験してみた限り、勝手にムーブとかしてくれるわけでもなさそうだし
ローカル変数に&&付いてると何に使えてんな時便利なの?
483デフォルトの名無しさん
2019/03/19(火) 21:34:25.38ID:/K8ycOQq 使わなくていい
484デフォルトの名無しさん
2019/03/19(火) 21:40:02.75ID:kyorfls3485デフォルトの名無しさん
2019/03/19(火) 22:04:14.68ID:gYGT/BxR 変数宣言した右辺値参照そのものは左辺値という罠
極力そんな物作るべきじゃないね
極力そんな物作るべきじゃないね
486デフォルトの名無しさん
2019/03/19(火) 22:05:37.07ID:8COf7JeC 俺今使い道思いついたんだけど披露してもいい?
>>486
どうぞどうぞ…
どうぞどうぞ…
488デフォルトの名無しさん
2019/03/19(火) 22:37:18.08ID:xP6m0cDT >>480-481
if constexprは実行時コストゼロのはずだよ
if constexprは実行時コストゼロのはずだよ
489デフォルトの名無しさん
2019/03/19(火) 22:53:01.58ID:bWZzZfFH >>488
ifがなんで実行時ゼロなんだよ
ifがなんで実行時ゼロなんだよ
490デフォルトの名無しさん
2019/03/19(火) 23:23:47.41ID:hIuEq8sX 赤っ恥
491デフォルトの名無しさん
2019/03/19(火) 23:26:12.29ID:/K8ycOQq >>489
if constexprにするとコンパイル時に評価されて特定の分岐のみが実体化される
if constexprにするとコンパイル時に評価されて特定の分岐のみが実体化される
492デフォルトの名無しさん
2019/03/19(火) 23:38:47.81ID:zcFktSXp493デフォルトの名無しさん
2019/03/20(水) 00:20:58.62ID:wnXzlprR494デフォルトの名無しさん
2019/03/20(水) 00:27:33.64ID:K21QzJf5 初心者がやたらとアスタリスク使ってポインタの参照値を得ようとするのに似た感じがある。
他言語に移植しにくいだろ、テンプレート化しにくくなるだろ、と小一時間。
他言語に移植しにくいだろ、テンプレート化しにくくなるだろ、と小一時間。
495デフォルトの名無しさん
2019/03/20(水) 00:56:45.75ID:LskeNtBJ アスタリスク使ってポインタの中身取ったらあかんのか・・・
496デフォルトの名無しさん
2019/03/20(水) 03:19:15.41ID:abqqrm1b multimap よりも set の vector の方が便利なのですが、異端ですか?
497デフォルトの名無しさん
2019/03/20(水) 04:26:37.96ID:LuG6mmni 別に
498はちみつ餃子 ◆8X2XSCHEME
2019/03/20(水) 04:53:08.98ID:K9L8gFp5 >>482
既に回答がついているとおり、 rvalue 参照はほとんどムーブのための機能。
ローカル変数的に使う理由はあんまりない。
テンプレート関数の仮引数や auto 変数として rvalue 参照 (の記法) が現れたときは
特殊な推論規則 (ユニバーサル参照) が適用されるというのは気を付ける必要がある。
既に回答がついているとおり、 rvalue 参照はほとんどムーブのための機能。
ローカル変数的に使う理由はあんまりない。
テンプレート関数の仮引数や auto 変数として rvalue 参照 (の記法) が現れたときは
特殊な推論規則 (ユニバーサル参照) が適用されるというのは気を付ける必要がある。
499デフォルトの名無しさん
2019/03/20(水) 07:25:39.73ID:iA5XXTHz ローカル変数もそうだけどintみたいなオブジェクト性が低いものに使っても意味ないわな。
rustの古いチュートリアルのmoveの例がなぜかintでクソだったけれど最近は文字列型になっとった。
rustの古いチュートリアルのmoveの例がなぜかintでクソだったけれど最近は文字列型になっとった。
500デフォルトの名無しさん
2019/03/20(水) 08:44:38.76ID:LSg3zFHe オブジェクト性
501デフォルトの名無しさん
2019/03/20(水) 10:22:31.87ID:fk3FMvWg 考えうるメソッドが少ない=オブジェクト性が低い、とかじゃねえの
int型の変数.length() とかは流石に意味不明に見える
int型の変数.length() とかは流石に意味不明に見える
502デフォルトの名無しさん
2019/03/20(水) 10:40:09.36ID:LuG6mmni 言いたいことは分かるが聞き慣れない言葉を使っているということでは
503デフォルトの名無しさん
2019/03/20(水) 11:01:00.31ID:9pRMZ9XY リテラルが右辺値ってのがよくわからんのだが
上の例のように右辺値参照でうけるとリテラルなのにそのアドレスがとれてしまう
かつ書き換え可能
なので右辺値参照にリテラルいれるときは、一旦名前のない領域にコピーされていると理解している
でもこれって通常の値の代入のときも名前のない領域にコピーしてからさらにコピーというセマンティクスなの?
上の例のように右辺値参照でうけるとリテラルなのにそのアドレスがとれてしまう
かつ書き換え可能
なので右辺値参照にリテラルいれるときは、一旦名前のない領域にコピーされていると理解している
でもこれって通常の値の代入のときも名前のない領域にコピーしてからさらにコピーというセマンティクスなの?
504デフォルトの名無しさん
2019/03/20(水) 11:29:19.49ID:sS5iHBwg 右辺値参照変数それ自体は左辺値だからね
505デフォルトの名無しさん
2019/03/20(水) 15:37:27.50ID:oYbI5+uJ 右辺値を参照で束縛すると、その右辺値の寿命は束縛してる参照と同じところまで引き伸ばされる
この点は左辺値参照も右辺値参照も一緒
この点は左辺値参照も右辺値参照も一緒
506デフォルトの名無しさん
2019/03/20(水) 16:05:23.24ID:9pRMZ9XY それ >>503 に関係ある?
507デフォルトの名無しさん
2019/03/20(水) 16:16:24.82ID:oYbI5+uJ どうして関係ないと思うの?
508デフォルトの名無しさん
2019/03/20(水) 20:55:29.39ID:9pRMZ9XY 一見リテラルのアドレスが取れて書き換えられる、ように見えることに疑問を持ってる
言い方変えると
右辺値参照に代入するとき
リテラルが右辺値でなくて、そのコピーが右辺値なのでは?
そこに寿命がどう関係あるのかわからない
言い方変えると
右辺値参照に代入するとき
リテラルが右辺値でなくて、そのコピーが右辺値なのでは?
そこに寿命がどう関係あるのかわからない
509デフォルトの名無しさん
2019/03/20(水) 21:07:28.64ID:LskeNtBJ アセンブラレベルで言うなら、即値なのかdataセクションにあるのかの違いじゃないの
510デフォルトの名無しさん
2019/03/20(水) 21:31:53.81ID:iA5XXTHz >オブジェクト性
コピーでも参照でも対してコストがかからんものというかそういうニュアンスなんだが
思った以上に伝わらんもんだな。
わかりやすいようにintと文字列を例に出してもこんなもんかもね。
コピーでも参照でも対してコストがかからんものというかそういうニュアンスなんだが
思った以上に伝わらんもんだな。
わかりやすいようにintと文字列を例に出してもこんなもんかもね。
511デフォルトの名無しさん
2019/03/20(水) 22:56:30.82ID:B8C8ZXR4 アドレスが取れたら右辺値ではないみたいな論調だな
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「日本はドイツと違い反省せず」…中国外相、独外相に対日批判 台湾問題で理解求める [少考さん★]
- 【おこめ券】鈴木農相 米価維持の意図「一切ない」 [ぐれ★]
- バリ島で男子生徒ら集団万引きか、防犯カメラ映像が拡散 京都の大谷中学・高校が「窃盗行為」謝罪★6 [七波羅探題★]
- 【警視庁】走行中の電車で女性に露出した下半身押しつけたか 無職の男(46)逮捕「チャンスがあればいつでもやる」 [nita★]
- 【苺ましまろ】立民衆院議員、人気漫画の水着少女画像を「醜悪」タイ人少女の性搾取事件と関連付け…党内で反発 [少考さん★]
- 「残業キャンセル界隈」若者が増加?「職務放棄」との批判も…“定時退社の権利”どこまで通用するか [七波羅探題★]
- 【悲報】ネトウヨゆたぼん、事故の見舞金を乞食したついでに今でもパパの自作自演操り人形なことがバレ終わるwwwwwwwwwww [802034645]
- 【高市悲報】中国軍「公海で空母の発着訓練するって事前通告したのになんで自衛隊機は急接近してきたんだ…?」中国軍困惑 [931948549]
- 30過ぎた大人おじさんが大学生(昔)のままのファッションをする「おじさんキッズコーデ」、炎上して問題視される。 [153490809]
- 現役ドラフト発表WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
- 俺はきっと"全部"嫌いなんだ。息づく全てが俺を苛つかせるんだ。
- 【速報】中国人の凶悪犯罪が急増!害国人の変遷、韓国→ベトナム→中国へ🏡
