[過去ログ] C++相談室 part130 [無断転載禁止]©2ch.net (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
703
(1): (ワッチョイ d79a-0UkT) 2017/07/11(火)22:46 ID:qjau/h5c0(4/4) AAS
>>701
目的による
家の鍵もプロが1分以内で開けられるから意味ない?
704: (ワッチョイ bfaa-rPCP) 2017/07/11(火)23:06 ID:01bGuLEG0(1) AAS
>>703
家の鍵を素人が作るのは意味ない。
705
(2): (ワッチョイ 9f89-EAWM) 2017/07/11(火)23:17 ID:VLYeJXw20(2/3) AAS
質問者の目的が言語の学習とか、ちょっとしたテキストの難読化なのかもしれないのに、
外野が憶測で否定したり変な方向で議論を展開したり…。
相談室なのだから、もうちっと質問者の為になる話の流れにならないかなと思う。
706: (ワッチョイ bfe4-LW8t) 2017/07/11(火)23:17 ID:7V5lebao0(4/5) AAS
>>699
少なくともこうしないと期待通りに動かないよ
int x = (a[0] << 24) + (a[1] << 16) + (a[2] << 8) + a[3];
707: (ワッチョイ 176f-zXdO) 2017/07/11(火)23:21 ID:jUUyBjmf0(2/4) AAS
>>705さんの言うとおりにテキストの難読化が目的です
bit演算に触れてみるのにちょっとした暗号化が良いレベルなのかなって思ってチャレンジしているところ
やっぱり演算子の優先度とかで注意点あるね

環境依存するのかな?この方法
708: (ワッチョイ 176f-zXdO) 2017/07/11(火)23:23 ID:jUUyBjmf0(3/4) AAS
>>700
環境依存で良いっていうとこの他にも色々あるんだ
自分の知っている限りの方法でできるならこれしか思いつかなかった…
709: (オッペケ Srcb-sNxi) 2017/07/11(火)23:33 ID:L5b0rMHKr(1) AAS
>環境依存するのかな?
むしろこのコードで動く環境が珍しいような
710
(2): (ワッチョイ 9f89-EAWM) 2017/07/11(火)23:45 ID:VLYeJXw20(3/3) AAS
char型が負数を表すかが環境依存。
負数を左シフトした結果が環境依存。
だからunsigned型の変数を使う。

負数を左シフトした結果が負数だったとして、それを加算したら想定してた結果にならないから、加算ではなくビットORを使う。
711: (ワッチョイ bfe4-LW8t) 2017/07/11(火)23:50 ID:7V5lebao0(5/5) AAS
思いつきで変な暗号作るより検索するなりしてまともな基礎的なアルゴリズムを実装したほうが勉強になる
712
(1): (スップ Sd3f-nSBM) 2017/07/11(火)23:55 ID:KCPaJcrVd(1) AAS
文盲多すぎね?
bit演算をやる方法を学びたい的な雰囲気なのに暗号作る方をメインに読み取ってるやつおおくね?
しかもレスもあったあとなのに
713
(1): (ワッチョイ 176f-zXdO) 2017/07/11(火)23:59 ID:jUUyBjmf0(4/4) AAS
>>710
charが負を表すか否かってのはどこも同じではない…?
あと最後の加算ではなくビットORってのは一体
714: (オッペケ Srcb-sNxi) 2017/07/12(水)00:01 ID:XspFYFk7r(1) AAS
>>701を文盲と断定する根拠は見あたらないが
>>705がアスペなのは間違いない
715
(1): (ワッチョイ bfe4-LW8t) 2017/07/12(水)00:04 ID:WTh+eJgx0(1/7) AAS
>>712
bit演算については何も聞いてないだろ
もう一回読み直せや
式がおかしいからツッコミ入ってるだけで質問の趣旨に対しては検索しろとしか言いようがない
716: (スップ Sd3f-nSBM) 2017/07/12(水)00:06 ID:vUTYJqrrd(1/4) AAS
>>715
いやどう見ても「bit演算に触れてみるのに」って書いてあんじゃん
その後に暗号化については重きをおいていないレスもかかれているのに思い付きで変な暗号を考えるより〜とかレスしてんじゃん
717
(1): はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 9f15-rvkC) 2017/07/12(水)00:15 ID:trGyb9bp0(1/2) AAS
>>713
単に int と書いたら signed int と書いたのと同じ意味になるからよく誤解されるんだけど、
char は signed char でも unsigned char でもない固有の型なんだよ。
オーバーロードで試してみたらすぐわかる。
表現できる範囲は signed char か unsigned char のどちらかと同じではあるけど、
どちらかは処理系が選択していい。
処理系によってはオプションで変えられる場合もある。
718
(1): 片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdbf-R88v) 2017/07/12(水)00:22 ID:mvEs3lAId(1/4) AAS
#include <cstdint>
unsigned char a[128];
...
unsigned char prev4bits = (a[128 - 1] >> 4);
for (int i = 0; i < 128 - 1; i++) {
unsigned char b = (a[i] >> 4);
a[i] <<= 4;
a[i] |= prev4bits;
prev4broken = b;
}
719
(1): 片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdbf-R88v) 2017/07/12(水)00:29 ID:mvEs3lAId(2/4) AAS
>>718
訂正。
#define NUM_BYTES 123
unsigned char a[NUM_BYTES];
...
unsigned char prev4bits = (a[NUM_BYTES - 1] >> 4);
for (int i = 0; i < NUM_BYTES; i++) {
unsigned char b = (a[i] >> 4);
a[i] <<= 4;
a[i] |= prev4bits;
省2
720
(1): 片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdbf-R88v) 2017/07/12(水)00:42 ID:mvEs3lAId(3/4) AAS
あるいは
#define NUM_BYTES 128
unsigned char a[NUM_BYTES];
...
unsigned char prev4bits = (a[NUM_BYTES - 1] >> 4);
for (int i = 0; i < NUM_BYTES / sizeof(int); i++) {
unsigned char b = (a[(i + 1) * sizeof(int) - 1] >> 4);
((int *)a)[i] <<= 4;
a[i * sizeof(int)] |= prev4bits;
prev4bits = b;
省1
721
(2): 片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sdbf-R88v) 2017/07/12(水)00:46 ID:mvEs3lAId(4/4) AAS
>>720
訂正。
#define NUM_BYTES 128
unsigned char a[NUM_BYTES];
...
unsigned char prev4bits = (a[NUM_BYTES - 1] >> 4);
for (int i = 0; i < NUM_BYTES / sizeof(unsigned int); i++) {
>unsigned char b = (a[(i + 1) * sizeof(unsigned int) - 1] >> 4);
((unsigned int *)a)[i] <<= 4;
a[i * sizeof(unsigned int)] |= prev4bits;
省2
722: (ワッチョイ 9f8f-gRQY) 2017/07/12(水)01:19 ID:L1I2nS9y0(1/2) AAS
>>710
負数を左シフトしても問題ないだろ
723: (ワッチョイ 9f8f-gRQY) 2017/07/12(水)01:21 ID:L1I2nS9y0(2/2) AAS
ああ、元の式を見てなかった
まさか足し算してるとは…
そのまま符号付きで使うことを意図してたら、確かに問題だな
724
(1): (ワッチョイ ffaa-PX3H) 2017/07/12(水)05:56 ID:HQm2gXhD0(1) AAS
LLVM, MISRA-Cでも決められているけど、
int, char など、処理系依存の型は使うな。
必ず、ビット数・符号の有無を明示すること

unsigned char
unsigned int32
725: (ワッチョイ d79a-0UkT) 2017/07/12(水)06:25 ID:Mf+sZV2C0(1/5) AAS
>>699
環境依存なのは、

intが4バイト
charが8ビット
負の数の表現方法

バグは

演算子の優先順位
xの右シフト
726
(1): (ワッチョイ d79a-0UkT) 2017/07/12(水)06:33 ID:Mf+sZV2C0(2/5) AAS
>>719
元の意図とは違う結果に見える

>>721
ビッグエンディアンじゃないと違う結果
バイトアクセス可能っていう条件もつく
727: (スップ Sd3f-nGAm) 2017/07/12(水)06:33 ID:7DtiXvdjd(1) AAS
>>717
関係ないけどそれをどう捉えるべきか

・だからC++は複雑
・C++は言われるほど複雑じゃない
728: (ワッチョイ 9709-8gU5) 2017/07/12(水)06:35 ID:DgqX1C+L0(1/4) AAS
C++はそろそろbyte型が入るよ。
多分エーリアスだけどね。
729
(1): (ワッチョイ d79a-0UkT) 2017/07/12(水)06:38 ID:Mf+sZV2C0(3/5) AAS
unsigned int x = (unsigned int)a[0] << 24 | (unsigned int)a[1] << 16 | (unsigned int)a[2] << 8 | (unsigned int)a[3];
x = x << 30 | x >> 2;

互換性と簡潔さのバランスで、こんな感じじゃない?

unsigned intが32bit
charが8bit
限定
730: (ワッチョイ d79a-0UkT) 2017/07/12(水)06:44 ID:Mf+sZV2C0(4/5) AAS
もうちょっと簡潔さ重視だと、キャスト無しで
731
(1): (ワッチョイ d79a-0UkT) 2017/07/12(水)06:50 ID:Mf+sZV2C0(5/5) AAS
バリバリ環境依存で速度重視なら
intrinsicでAVX2やAVX512とか

インラインアセンブラはこのスレ的には反則?
732: ◆QZaw55cn4c (ワッチョイ 176d-hafE) 2017/07/12(水)07:30 ID:9q9UgJkW0(1/2) AAS
>>724
かならずしも賛同できない、必要なときに unsigned/signed を指定すればいいのでは?
733: (ワッチョイ 9709-8gU5) 2017/07/12(水)07:31 ID:DgqX1C+L0(2/4) AAS
cstdintを使おう。
734: ◆QZaw55cn4c (ワッチョイ 176d-hafE) 2017/07/12(水)07:31 ID:9q9UgJkW0(2/2) AAS
>>731
インラインで自由にかけてこそのC/C++ だと思うんだが、最近は嫌われるみたいだね
735: (オッペケ Srcb-sNxi) 2017/07/12(水)07:59 ID:SNfdy8Tor(1/3) AAS
MISRAさんパネェな
for (int = 0;i <= n; i++) // きんし!
X operator ++(int); // きんし!
int main() {} // きんし!
736: (スップ Sd3f-nSBM) 2017/07/12(水)08:23 ID:vUTYJqrrd(2/4) AAS
>>729
あとの問題はあれだな
応用利かせるなら128文字が129文字になったときにどうするかなどの規約的な話にも対応できるようなコードにする方が
後にちに勉強になりそう
737: (ワッチョイ bfe4-LW8t) 2017/07/12(水)08:47 ID:WTh+eJgx0(2/7) AAS
バイト単位で回転させるだけならstd::rotateやstd::copyでいい
738
(1): (ワッチョイ 1706-pw7F) 2017/07/12(水)10:52 ID:QOR+1nCC0(1/3) AAS
自作クラスで他の自作クラスのインスタンスのコレクションを返すメソッドを追加したい
のですがクラス設計ってどうすればいいでしょうか??ガチガチの最適化?まではしなくていいので
普通ぐらいの最適化?ぐらいでOKです。

public:
 std::shared_ptr<std::vector<std::shared_ptr<CMyClass>>> EnumeateMyClasses()

こんな感じで設計すればいいでしょうか?
C#なら
 IEnumerable<CMyClass> EnumeateMyClasses()
とかにするんですが
739: (ワッチョイ 9709-8gU5) 2017/07/12(水)11:12 ID:DgqX1C+L0(3/4) AAS
返したものをどこら辺まで使うんやろ。
たらい回しにするんだったら、スマポでも良いけど、一時でやるんだったらこんすと参照でも良いし。
でも、内部で持ってるものを外でたらい回しにされるのは気持ち悪いな。
740
(1): (ワッチョイ 1706-pw7F) 2017/07/12(水)11:30 ID:QOR+1nCC0(2/3) AAS
Enumerateメソッドは内部ではインスタンス作りますが、内部でその参照を保持することは
ないですね、メソッド内で作って呼び出し元に返すだけです。
どれくらいたらい回すかは使う側次第です。

>たらい回しにするんだったら、スマポでも良いけど、一時でやるんだったらこんすと参照でも良いし
こんすと参照とかもあるんですか・・
まぁ、先ほども書いたようにC++に深入りすると死にそうなので、
とりあえず、C#erの人がちょっと毛が生えた程度でC++を使うレベルでいいので。
741: (ワッチョイ 9709-8gU5) 2017/07/12(水)11:34 ID:DgqX1C+L0(4/4) AAS
>>740
どう伝えればいいかわかんない。
識者求。
742: (ワッチョイ bfe4-LW8t) 2017/07/12(水)12:51 ID:WTh+eJgx0(3/7) AAS
>>738
それでもいいと思うけど
コンパイラの最適化が期待できる状況ならvectorをshared_ptrで包む必要は無い
743: (スプッッ Sd3f-nGAm) 2017/07/12(水)13:59 ID:HO+tEfFId(1/2) AAS
うん、ただvectorを返せばいいと思うけど
744
(3): (ワッチョイ 1706-pw7F) 2017/07/12(水)14:16 ID:QOR+1nCC0(3/3) AAS
あれ、そうなんですか??
ムズイな・・
vector自体を返しても、要素自体はコピー?されないってことですかね?
ぐぉぉぉ。
745: (スップ Sd3f-nSBM) 2017/07/12(水)14:31 ID:vUTYJqrrd(3/4) AAS
なんでキャラ配列では終端文字を意識して
他の型の配列では意識しないんだぜ
746: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 9f15-rvkC) 2017/07/12(水)14:43 ID:trGyb9bp0(2/2) AAS
>>744
RVO やムーブによってコピーが抑制される。

従来の RVO は「してもよい」という、
省略による最適化を許す形で規定されていたが C++17 からは必須になってるので、
条件がそろえば確実にコピーはされないことが保証される。
747: (スプッッ Sd3f-nGAm) 2017/07/12(水)15:24 ID:HO+tEfFId(2/2) AAS
>>744
そもそも、
もともと存在しているvectorを返すのかメソッド内で構築したvectorを返すのか、
がはっきりしてない。
後者だったら参照とかでなく単にvectorを返せばいい。
748
(1): (ワッチョイ bfe4-LW8t) 2017/07/12(水)19:23 ID:WTh+eJgx0(4/7) AAS
>>744
C++で値の代入にはコピーとムーブの2種類がある
ムーブは代入先に中身を移譲する機能
ムーブ元はムーブ前と後とで同一であるとは保障されない
具体的には定義したムーブコンストラクタとムーブ代入演算子に記述したコードが実行される

vectorの場合ムーブされると内部の配列のポインタを代入先のvectorの配列のポインタに付け替える
こうすることで中身をコピーせずポインタの代入だけで他のvectorに移し変えることができる

ローカル変数など関数のスコープを抜けたら自動的に開放されて二度と使われない変数を戻り値にした場合、コピーしているように見えても自動的ムーブが選ばれている
749
(1): (ワントンキン MM7f-hrVG) 2017/07/12(水)21:17 ID:AocYxtQtM(1) AAS
>>748
最後嘘じゃない?
RVOが効くケースでは直接構築が優先だよね?
750
(1): (ワッチョイ bfe4-LW8t) 2017/07/12(水)22:04 ID:WTh+eJgx0(5/7) AAS
>>749
正しくは変数の初期化の式で呼び出した場合は直接構築になりそれ以外ではムーブになるでした
751
(1): (オッペケ Srcb-sNxi) 2017/07/12(水)22:10 ID:SNfdy8Tor(2/3) AAS
>>750
それは規格のどこに書いてあるのですか?
752: (ワッチョイ bfe4-LW8t) 2017/07/12(水)22:34 ID:WTh+eJgx0(6/7) AAS
>>751
規格厨じゃないから知りません
753
(1): (オッペケ Srcb-sNxi) 2017/07/12(水)22:35 ID:SNfdy8Tor(3/3) AAS
なるほどこうやってデタラメが吹聴されて世の中が嘘だらけになるのだな
754: (ワッチョイ bfe4-LW8t) 2017/07/12(水)22:42 ID:WTh+eJgx0(7/7) AAS
>>753
何の引用も無しに書いた文章なんて嘘まみれに決まってるだろ
755
(2): (スップ Sd3f-nSBM) 2017/07/12(水)23:21 ID:vUTYJqrrd(4/4) AAS
上の方にあるbitいじりの件ってわざわざint型に演算していれ直す必要もなくね?って思い始めた
charの先頭文字をint*に直して操作するのじゃダメなんか??
756: (ワッチョイ 9f89-EAWM) 2017/07/12(水)23:36 ID:cPl7Kb1c0(1) AAS
>>755
何言ってるか分からないのでコードで頼む。
ちなみに、アラインメントとかは理解してる?
757: (ワッチョイ 6e9a-YkGU) 2017/07/13(木)06:46 ID:lX8cJUTX0(1/6) AAS
>>755
>>721 >>726
758
(1): (ワッチョイ 321b-HOJV) 2017/07/13(木)06:48 ID:Yj3E6QQW0(1) AAS
>>699
C++の規格ではいつまでたってもビットローテーション入れてこないからな。
だが、ビットしシフトで処理するのが速いか、いったん配列にいれたほうが速いか、
両方作って確認した方がいいぞ。
バレルシフタ載ってるMPUじゃないとビットシフトが結構重かったりする
759
(1): (ワッチョイ 6e9a-YkGU) 2017/07/13(木)07:03 ID:lX8cJUTX0(2/6) AAS
> ビットしシフトで処理するのが速いか、いったん配列にいれたほうが速いか、

意味不明
ローテーションは後半だぞ

前半はただ単にintにロードしてるだけ
なぜかビッグエンディアン形式で
環境はSHか何か?
760: (ワッチョイ 6e9a-YkGU) 2017/07/13(木)07:05 ID:lX8cJUTX0(3/6) AAS
C++にローテーションなんか入れなくて良い
使う機会も少ないし、簡単にC++に表記できるし

他に増やしたいものは色々ある
そっち優先で
761
(1): (スプッッ Sd9e-y/ao) 2017/07/13(木)08:50 ID:g1X/OFssd(1) AAS
まるで開発資源が足りてないかのような言い分
762: (ドコグロ MM36-OTuW) 2017/07/13(木)12:50 ID:EiZFhTPMM(1) AAS
理解するための俺の頭の資源は有限
763: (スッップ Sd70-YkGU) 2017/07/13(木)13:23 ID:b1PvI/zld(1) AAS
>>761
言語の機能として、新たな演算子を新たな文字で作るのは無駄だと

標準ライブラリに入れるっていうならどうぞご自由に
764: (ワッチョイ b2e4-vU4W) 2017/07/13(木)19:02 ID:oXf/mLI10(1) AAS
boostのdynamic_bitsetにバイト列との相互変換機能とバイトオーダーを切り替えられる機能と範囲を切り出せる機能を追加したものを標準に入れるべき
765
(1): (ワッチョイ baf0-z+eH) 2017/07/13(木)19:48 ID:XkT7ManS0(1) AAS
FFTで使うビット逆転も仲間に入れてよ
766: (ワッチョイ 6e9a-YkGU) 2017/07/13(木)20:46 ID:lX8cJUTX0(4/6) AAS
>>765
ビット演算のテクニックの基本とかに載ってそう
767
(1): (ワッチョイ 469f-wtyE) 2017/07/13(木)21:06 ID:RqiuYpPc0(1/3) AAS
ファストフーリエトランスファーの良い参考文献ないっすかね
768: (ワッチョイ 6e9a-YkGU) 2017/07/13(木)21:20 ID:lX8cJUTX0(5/6) AAS
おれ専門家だから何でも聞いて
769: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ d015-S4qQ) 2017/07/13(木)21:21 ID:anRp6w5D0(1) AAS
まずは Wikipedia から
770
(1): ◆QZaw55cn4c (ワッチョイ 6e9a-n9U6) 2017/07/13(木)21:25 ID:NDMOLt7F0(1) AAS
>>767
外部リンク:www.amazon.co.jp
771: (ワッチョイ 6e9a-YkGU) 2017/07/13(木)21:27 ID:lX8cJUTX0(6/6) AAS
そうだね
基礎から教えるつもりはない

応用、テクニック、実装方法、高速化、AVX512の使い方、キャッシュサイズによる最適化、HDDを使った場合の並べかえ方法、...
など具体的に聞いてくれれば
772: (ワッチョイ 469f-wtyE) 2017/07/13(木)21:34 ID:RqiuYpPc0(2/3) AAS
やりたいことはリアルタイムオシロですかね
ビジュアル的に表示出来ることから始めて
最終的にはArduinoで周波数検波器作りたいかも
773: (ワッチョイ 469f-wtyE) 2017/07/13(木)21:38 ID:RqiuYpPc0(3/3) AAS
>>770
ほしいものリストに追加しますた
ありがとうございますた
774: (ワッチョイ 321b-HOJV) 2017/07/14(金)06:45 ID:JUkrjA2t0(1) AAS
>>759
バレルシフタが何かわからんアホはすっこんでろ
775: (ワッチョイ 6e9a-YkGU) 2017/07/14(金)07:04 ID:dCevqkg20(1) AAS
>>758の真ん中のブロック、意味がわかるなら解説よろしく
776
(1): (スップ Sdc4-aKa0) 2017/07/15(土)13:45 ID:fnbVxk0dd(1/2) AAS
VBから読み出せるdllを作るときの注意点ってある??
777: (ワッチョイ f6e4-PXrN) 2017/07/15(土)14:17 ID:u0zSb1i50(1) AAS
メモリ管理
778
(1): (スプッッ Sd9e-y/ao) 2017/07/15(土)15:27 ID:GMW24mlhd(1/3) AAS
>>776
__stdcall呼び出しにする
ってかどのVB?
779
(2): (スップ Sdc4-aKa0) 2017/07/15(土)17:14 ID:fnbVxk0dd(2/2) AAS
>>778
vb6.0っていう化石
780: (スプッッ Sd9e-y/ao) 2017/07/15(土)17:26 ID:GMW24mlhd(2/3) AAS
>>779
ふーん、なら
VB側のByRef x As Variant は、C++側で
Variant* pV とVariant& x のどっちでも受けられる
これ豆な
781
(1): (スプッッ Sd9e-y/ao) 2017/07/15(土)17:33 ID:GMW24mlhd(3/3) AAS
>>779
あと、文字列はBSTRで受けるとなぜか文字化けすることがある。
Variantで受けてbstrValメンバを取り出すと大丈夫。(もしくはpbstrValメンバ)
不思議だ。
782: (ワッチョイ 0aa6-1m9k) 2017/07/16(日)16:02 ID:o1PqrRM30(1/3) AAS
テンプレートの部分特殊化について質問っす
外部リンク:ideone.com
この例なんで曖昧になるですかね?
下が選ばれると思ったんですが
783
(1): (ワッチョイ 955a-qt4g) 2017/07/16(日)16:21 ID:CxpOV7IS0(1/2) AAS
const が付いてるからじゃね
784: (ワッチョイ 0aa6-1m9k) 2017/07/16(日)17:06 ID:o1PqrRM30(2/3) AAS
>>783
constなintなのにconst T&のconst関係なくない?
それにT(&)[4]の方がより細かい気がする
785: (ワッチョイ 955a-qt4g) 2017/07/16(日)18:31 ID:CxpOV7IS0(2/2) AAS
struct A<T (&)[4]> は、
struct A<const T &> の特殊化じゃないんじゃね?
786: (ワッチョイ f146-I8+U) 2017/07/16(日)18:46 ID:TI5o59vg0(1/2) AAS
テンプレート引数型を明示してるのに、その型に一意にマッチする定義がないからでしょ。
どっちが近いかを決定するような優先順位の規定がないので ambiguous になる。
compiler からしてみたら仕様がなければ勝手に判断できないって話。
787: 片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd70-qcL/) 2017/07/16(日)18:49 ID:8ivnKhmqd(1) AAS
int (&)[4]の左側にconst付ける意味あんの?
788: (オッペケ Srea-1m9k) 2017/07/16(日)19:11 ID:0XlWr73/r(1/2) AAS
>どっちが近いかを決定するような優先順位の規定がない
何故か規格を読まない奴ほど自信満々に嘘をつく法則
789
(1): (オッペケ Srea-1m9k) 2017/07/16(日)19:21 ID:0XlWr73/r(2/2) AAS
規格の8.3.4p1により配列のconstは要素のconstと等価なので、A<int const (&)[4]>はA<T const &>に適合する
790
(1): (ワッチョイ f6e4-PXrN) 2017/07/16(日)19:35 ID:F/PpVxkG0(1/2) AAS
C++14まででいいので全文日本語の規格書くれよ
791: (ワッチョイ 0aa6-1m9k) 2017/07/16(日)20:01 ID:o1PqrRM30(3/3) AAS
優先順位ルールよくわからんっす
792: (スプッッ Sd2a-aKa0) 2017/07/16(日)20:21 ID:5frVCgipd(1) AAS
>>781
vbやったことないからなるほどよくわからん...
vb6.0についてとか全然書籍とかもないから本当に困る
793: (ワッチョイ f6e4-PXrN) 2017/07/16(日)20:26 ID:F/PpVxkG0(2/2) AAS
古代言語の解読は自己責任だ
細かいこと考えたくなければ標準入出力で繋げばいい
794: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ d015-S4qQ) 2017/07/16(日)20:41 ID:tihnLl5v0(1) AAS
>>790
JIS に働きかけてくれ
795: (ワッチョイ f146-I8+U) 2017/07/16(日)21:06 ID:TI5o59vg0(2/2) AAS
>>789
ありがとう、探してくれて。
796: (オッペケ Sr10-1m9k) 2017/07/16(日)21:31 ID:Z5uaiz2pr(1) AAS
テンプレートの部分順序は規格1400ページの中で恐らく最も難解
順序はテンプレート実引数と関係無く仮引数同士で判定され、直感的には
 P (&)[4] ← struct X {} const & × Pの導出不可
 P const & ← struct X {} (&)[4] × Pの導出不可
によりambiguous
規格の説明は14.5.6.2, 14.8.2.4, 14.8.2.5
797: (ワッチョイ 1a42-Z+b3) 2017/07/17(月)06:43 ID:WTwWKmZ80(1/2) AAS
>>673
プロパティってのはオブジェクトの状態の抽象化

例えば、コンテナのlistのsizeはコンテナとしての状態
sizeは要素数に対して定数時間で取得可能って条件があるからメンバ変数としてsizeを持ってる
そうでなければ線形時間になってしまう
vectorは大抵の場合、確保したメモリの始端と終端、要素の終端を表すポインタをメンバ変数に持つけど
ポインタ演算で定数時間で求められるから、sizeのメンバ変数は持っていない
emptyも状態、listもvectorも空を表すbool型のメンバ変数は持たないけど
コンテナとしてemptyかどうかの状態を取得できるわけで、メンバ変数と対とはなっていない

つまり、クラス設計上必要なオブジェクトとしての状態のget/setが目的であって
省5
798
(1): (オッペケ Sr10-1m9k) 2017/07/17(月)09:28 ID:ESb998SRr(1/2) AAS
>エンディアンは気にしないw
物は言い様で、本当は触ったことが無いのであった
AIXやSPARC使いに「インテル能乙」と揶揄されても仕方ない
799: (ワッチョイ 1a42-Z+b3) 2017/07/17(月)09:43 ID:WTwWKmZ80(2/2) AAS
>>798
1つの方法を示しただけで、必要なら気にしたら良いってレベルの話なんだけどな
質問者も完全な解決策ではなくアイディアを求めているだろうし
800: (ワッチョイ 3eaf-iUs+) 2017/07/17(月)09:52 ID:NM7AtMtK0(1) AAS
エクスプレッションテンプレートを使った二項演算子のオーバーロードって
・グローバル空間全体
・特定の名前空間で定義して、使う部分ではその名前空間を指定
のどちらかになるということになりますか?
つまり通常のクラスの演算子オーバーロードのようにクラス単位に限定する方法はなさそうです?
801: (オッペケ Sr10-1m9k) 2017/07/17(月)22:32 ID:ESb998SRr(2/2) AAS
通常のクラスの例であるstd::complex<>は二項演算子を使う部分で名前空間など指定しなくても良いし
そのオーバーロード関数はクラスではなくstd名前空間に限定している
式テンプレートでそれ以上のことが必要なのだろうか
802
(1): (ワッチョイ 7011-MRQN) 2017/07/18(火)00:26 ID:2CukONSS0(1/2) AAS
名前空間で定義して、ETで使うクラス全て特定の名前空間内で定義するか、
ライブラリが提供する型以外を許容しないなら、演算子を各クラス内に定義するだけでいい

ETと協調しうるあらゆる型も許容するために
template <typename T, typename U>
fugaexpression<T, U, ...> operator +(T t, U u);

と書きたいのなら、演算子を名前空間内に書くとか
enable_ifで条件に合わないものを弾くなりしないといけない
1-
あと 200 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.048s