X



C++相談室 part161

■ このスレッドは過去ログ倉庫に格納されています
0651デフォルトの名無しさん
垢版 |
2022/08/19(金) 20:42:25.54ID:rkGmDNWr
>>644
>>647
規制されてしまいましたが643でございます。
メンバにユニークポインタがある場合は代入演算子とコピコンは削除された関数とされてしまい、コピーが実行できません(涙
ユニークポインタは明示的に複製されないとだめなのはわかるので、仕様には文句があるべくもないのですが……
例えばの話、データ型にint char等のメンバが100個あったとして、ユニークポインタのユーザー定義型が1個紛れ込むだけで、すべてのメンバを書き出しをしなければいけないのでしょうか?
みなさんはちゃんと書きだしているのですか?と疑問に思ったので・・・
まあユニークポインターを含むデータ型をコピーしない運用をなさっているのだと思うのですが、わたしは使ってしまいます(怒)
そこで、なにか裏技のような方法がないのかなとお聞きしてみた次第であります(`・ω・´)ゞ
0653デフォルトの名無しさん
垢版 |
2022/08/19(金) 21:01:24.21ID:rkGmDNWr
>>652
メンバ変数 std::unique_ptr<My_Uniq> my_uniq; において
this->my_uniq=std::make_unique<My_Uniq>(*(right_arg.my_uniq.get()));
とコピーできるのはシンプルなのですが……

struct hoge
{
hoge& operator=(const hoge& r);
int a=0,b=0,c=0;
char d=0,e=0,f=0;
std::string g,h,q;
std::unique_ptr<MyHage> pMHage;
};
といった構造体において、
hoge& hoge::operator=(const hoge& r)
{
//メンバ全部かかなきゃいけない( ;∀;)
}
という感じになってしまうのが困るというか……もっと楽できないかなと思いまして(´;ω;`)
0655デフォルトの名無しさん
垢版 |
2022/08/19(金) 21:14:52.11ID:rkGmDNWr
>>654
なるほど得心いたしました!
ユニークポインタをラップしたクラスにコピーコンストラクタを実装すればいいという……ってコト?
ですね?
ちょっと試してめます
0656デフォルトの名無しさん
垢版 |
2022/08/19(金) 21:36:17.81ID:rkGmDNWr
643です
解決しました
皆様ご親切にありがとうござい甘いた
ラップしてオペレーター実装すればいいだけだったとは……
こんなので悩んでるの私だけではないだろうか
0657652
垢版 |
2022/08/19(金) 23:10:05.19ID:SM6rQCcv
>>656
携帯だったので書けなかったけどこんな感じで
template <typename T>
class deeep_copy_unique_ptr: private std::unique_ptr <T>
{
using Base_ = std::unique_ptr <T>;
public:
explicit deeep_copy_unique_ptr (T *p = nullptr): Base_ (p) {}
deeep_copy_unique_ptr (const deeep_copy_unique_ptr <T> &p): Base_ (std::make_unique <T> (*p)) {}
deeep_copy_unique_ptr &operator = (const deeep_copy_unique_ptr <T> &p) {Base_::operator = (std::make_unique <T> (*p)); return *this;}
using Base_::operator *;
};
0658デフォルトの名無しさん
垢版 |
2022/08/20(土) 17:45:23.06ID:K3rnpbr9
>>621
それがそうでもないんですよ。だれか簡単なソースで示してくれませんか?
ハンドルごとにデストラクタがいろいろと変わるのが難しいと考えています。
0659デフォルトの名無しさん
垢版 |
2022/08/20(土) 17:53:55.99ID:zyxn7VyM
ハンドルごとに異なるデストラクタを指定すればよいのでは?
何が難しいのかソースで示してくれませんか?
0660デフォルトの名無しさん
垢版 |
2022/08/20(土) 17:54:26.62ID:ThG9yriU
>>658
> ハンドルごとにデストラクタがいろいろと変わるのが難しいと考えています。
ハンドル毎にクラス作ればいい
と言うかハンドル毎にコンストラクタも色々変わるはずだがそっちはいいのか?
0661はちみつ餃子 ◆8X2XSCHEME
垢版 |
2022/08/20(土) 18:23:11.87ID:ktmIW8Jj
>>658
ポインタ以外のリソース一般を扱うための unique_resource クラスの提案は出ている。
一部の処理系では使えるようになっているし、ポータブルな実装があるので導入してみてもいいかもね。

このような提案が出ているのは逆に言えばスマートポインタではハンドルを上手く扱えないということでもある。
0663デフォルトの名無しさん
垢版 |
2022/08/20(土) 21:48:51.04ID:XA6yEFAc
>>658
そのハンドルって何? ハンドルを具体的に指定せずにソースで示せとな?

#include <memory>
#include <cstdio>
#include <string>
using namespace std;
int main ()
{
using File_Ptr = unique_ptr <FILE, decltype (&fclose)> ;
const string path ("hoge.txt");
File_Ptr fp (fopen (path.c_str (), "w"), &fclose);
const string buf ("hage\n");
fwrite (buf.c_str (), 1, buf.size (), fp.get ());
return 0;
}
0664デフォルトの名無しさん
垢版 |
2022/08/20(土) 21:51:59.51ID:xbv+n9gR
unique_ptr縛りですか?
shared_ptrならコンストラクタの第二引数にDeleter関数を渡せるけど
0666デフォルトの名無しさん
垢版 |
2022/08/21(日) 01:35:54.66ID:hxqq7KJv
こんな昔ながらのRAIIクラスでいいじゃん

class FantasticHolder
{
FantasticHandle h = NULL_HANDLE;
errno_t e;
public:
FHHolder(int flag, void* data, FOption option)
{
 e = create_fantasy(&h, flag, data, option, false, NULL, Fantasy::DREAM);
}
close() {
 e = universal_fancy_destroyer(h, NULL, true, Fancy::FANTASTIC);
 h = NULL_HANDLE;
}
~FHHolder() { close(); }
const FantasticHandle& getHandle() const {return h;}
erron_t getError const {return e;}
};
0667デフォルトの名無しさん
垢版 |
2022/08/21(日) 13:06:57.68ID:j3ukytx2
>shared_ptrならコンストラクタの第二引数にDeleter

ほんそれ
0668デフォルトの名無しさん
垢版 |
2022/08/21(日) 18:27:12.08ID:llGchqj4
lzw書いたら、色々プリプロセス突っ込んでやったのにメルセンヌツイスタの前に敗北した。
2色ビットマップは1/5になったけど、ブロックソートがアホみたいに遅い・・・。Orz
0671デフォルトの名無しさん
垢版 |
2022/08/25(木) 10:04:27.81ID:1QA/N1Qa
サブルーチンsub、
subを呼ぶA、
subを呼ぶB、
があって、subをAとBからしか見えないスコープに置きたくなったんですが、そういうときはnamespaceを切るしかないですか?
0672デフォルトの名無しさん
垢版 |
2022/08/25(木) 10:09:20.76ID:s36cDPHI
>>671
sub, A, Bをひとつのファイルに入れてファイルスコープで区切るとかクラスにまとめてクラススコープで区切るとか
0673デフォルトの名無しさん
垢版 |
2022/08/25(木) 12:00:46.82ID:1QA/N1Qa
>>672
クラスに入れるとしたら毎回インスタンス作って呼ぶんですかね?
外から呼ぶためだけにstatic関数にするのもなーと思ってしまうのですが、そういうのはよくやられていることですかね?
0674デフォルトの名無しさん
垢版 |
2022/08/25(木) 18:28:04.89ID:tuQ48GQq
Javaとかではstatic関数まとめクラスはよく見るけどC++ではあんまり見ない
それこそnamespaceを使う
0675はちみつ餃子 ◆8X2XSCHEME
垢版 |
2022/08/25(木) 18:44:56.88ID:ktMJLYyQ
それはどうだろう。
namespace は内部を隠蔽しない。
キッチリと隠したいなら翻訳単位を分けるか、
翻訳単位内でも隠蔽したいならクラスに入れるかしかやりようがない。

やろうと思えば namespace で区切ってここにはアクセスしないことにするという
規約で運用するとかも出来るが、その程度で足りるなら
そんなに分けなくてもよくない? って思うし。
0676デフォルトの名無しさん
垢版 |
2022/08/25(木) 20:19:01.82ID:TTLAkLfZ
subを公開ヘッダに書かずに非公開ヘッダに書くだけでよくね?もしくはヘッダを用意せずに各ソースコードからexternするとか。どっちも完全に隠蔽されるわけじゃないけど。

あとは全部同じソースコードに格納できるなら無名名前空間の中にsubを入れとくとか?
0680剛田武
垢版 |
2022/08/25(木) 23:01:36.69ID:JbTCA7nE
おお!心の友よ!
お前のものは俺のもの
俺のものは俺のもの
0684デフォルトの名無しさん
垢版 |
2022/08/31(水) 19:31:25.12ID:LmkW4fMO
MessageBox()みたいな機能でボタンのテキスト変更できるファンクションありませんか

メッセージが"ぬるぽ"なら[ガッ]のボタンを押したいじゃないですか!
[ はい ]、[ いいえ ]だと"ぬるぽです。ガッする場合は[はい]を押してください"みたいに長々と説明しないといけないので(´・ω・`)
0688デフォルトの名無しさん
垢版 |
2022/09/01(木) 10:24:37.74ID:0re8NfSH
windowsのアプリの話
C++で作成するとランタイムが必要なんですか?
Cならランタイムは不要ですか?
windowsのアプリを作成するとしたらC++とCでどちらの方が良いでしょうか?
0689デフォルトの名無しさん
垢版 |
2022/09/01(木) 10:35:00.87ID:J4auvpO0
ランタイムライブラリはCでも必要
アプリ制作が目的ならC/C++はそもそも向いてないかもしれない
出来なくはないが、そのレベルの質問をするようだと今後苦労するかも
0690デフォルトの名無しさん
垢版 |
2022/09/01(木) 10:38:04.37ID:0re8NfSH
>>689
ありがと
0691はちみつ餃子 ◆8X2XSCHEME
垢版 |
2022/09/01(木) 10:47:53.40ID:LhGLll4T
>>688
C/C++ のランタイムライブラリの一部は Windows の一部として入っているからその範囲内でならどちらでもあまり関係がない。
ランタイムライブラリの一部はVisual C++ 再頒布可能パッケージとして配布されているものもあるが Windows のバージョンによっては
最初から入ってるとかもあるのでそのあたりの事情は複雑。
バージョンの混乱を避けるならスタティックリンク版を使ったほうが楽だと思う。

Windows のアプリケーションを C で書くのはだいぶんしんどいと思う。
C++ なら楽というわけでもないけど各種フレームワークが C++ を前提にしていたりするので全体としては楽をしやすい可能性が高い。
ただ、言語仕様としては C++ のほうがだいぶん複雑ではあるので言語に対する習熟がどの程度かにもよる。
0693デフォルトの名無しさん
垢版 |
2022/09/01(木) 11:08:01.39ID:wgtUDrt5
Runtime と API って結局何が違うん?
0694デフォルトの名無しさん
垢版 |
2022/09/01(木) 11:10:18.56ID:wgtUDrt5
GDI+はCからでも使えるよな
0695はちみつ餃子 ◆8X2XSCHEME
垢版 |
2022/09/01(木) 11:17:08.19ID:LhGLll4T
ランタイムは実行時に使われるライブラリ (およびその他の実行時サポート) で、
API はそれらを呼出すインターフェイスのこと。

ただ、そんなにしっかりした定義があるわけではなくて
スタティックリンクするライブラリのインターフェイスを API と呼ぶかどうかなどは人によるかも?
API の P はプロトコルの P なので独立性の高いモジュールの外部仕様なら
形態にかかわらず API と呼んでいいんじゃないかと個人的には思っているが。
0696デフォルトの名無しさん
垢版 |
2022/09/01(木) 11:27:49.27ID:wgtUDrt5
ntdll.dll とか kernel32.dll は API って感じするけど
それ以外は全部 Runtime で良いんじゃないかとも思う
msvcrt を API かって言われたら絶対違う気がする
0698デフォルトの名無しさん
垢版 |
2022/09/01(木) 12:36:35.99ID:GpP6p1Yr
APIは「境界面・接点」だから、インターフェイスの向こう側は対象外。
ライブラリは「書庫」なので、中身を含めてライブラリ。
0699デフォルトの名無しさん
垢版 |
2022/09/01(木) 12:48:19.96ID:0gPlf6MI
ランタイムは、特定の開発手段(GCC, VSなど)に関係する実行環境に持ち込むもの
APIは、特定の操作対象(OS、アプリなど)に関係する関数など
0702デフォルトの名無しさん
垢版 |
2022/09/01(木) 13:39:01.39ID:wgtUDrt5
携帯電話をケータイと略してしまって何のことか判らなくなるのが日本人の本質
0706デフォルトの名無しさん
垢版 |
2022/09/01(木) 14:06:48.53ID:P/wcDX1Q
いうて英語圏でも普通にRuntimeと表記されまくってるよ
CRTLよりCRTのが一般的だし。RTよりはRTLかもしれんが

>>703
したらわざわざ区別するような名称が付いたりしません
0707はちみつ餃子 ◆8X2XSCHEME
垢版 |
2022/09/01(木) 14:15:18.72ID:LhGLll4T
>>702
いや、プログラムから呼び出されるライブラリだけでなく実行時サポートのための機構全般を含めてランタイムという場合もある。
たとえば WebAssembly の仮想機械の実装である wasmtime も "A fast and secure runtime for WebAssembly" と説明されている。
https://wasmtime.dev/

明確な用例を見つけられないんだけど .NET とかでも同じようなニュアンスだったはず……。
0710デフォルトの名無しさん
垢版 |
2022/09/01(木) 15:06:04.82ID:X5eV6Z9e
WebAPI はどうでもいいとして
Win32API 以前は API ってあんまり聴かんかった気がする
もし時代が時代なら C Runtime は Console API とか
System Call API とか名付けられていたんじゃまいか
0712はちみつ餃子 ◆8X2XSCHEME
垢版 |
2022/09/01(木) 15:45:49.43ID:LhGLll4T
ランタイム (実行時) という語をあてはめる以上は静的ではないというニュアンスが感じられるし、
ダイナミックリンクされるもの全般をふんわりとそう呼び始めたとかではないかなぁ。
あくまでも想像の域を出ないけど。

>710
それはどうだろう。
C ランタイムはコンソールの操作だけを司るわけではないし、ほとんどの関数はシステムコールしない。
あくまでも C という言語の事情に強く結びついているのでランタイムとは呼ばれなかったとしても
C ナントカという名前にはなったんじゃないかな。
0713デフォルトの名無しさん
垢版 |
2022/09/01(木) 16:33:34.64ID:X5eV6Z9e
stdc
0716デフォルトの名無しさん
垢版 |
2022/09/01(木) 20:14:05.79ID:IftgsB+t
DOSの頃はINT21hのシステムコールだしな。
描画はVRAM直だし。
APIと言うより割り込みだな。
0717デフォルトの名無しさん
垢版 |
2022/09/01(木) 21:31:42.28ID:2+rvldGI
APIという言葉からは、実装を絶対に見せたくないという強い意志のようなものを感じる
0718デフォルトの名無しさん
垢版 |
2022/09/01(木) 23:17:08.92ID:X5eV6Z9e
oppapi
0720はちみつ餃子 ◆8X2XSCHEME
垢版 |
2022/09/02(金) 00:07:28.67ID:4QwPhwTb
>>716
DOS の用語ではファンクションコールじゃなかったっけ……
と思って資料を読み返したらなんだかあまり統一されてない感じだった。
ファンクションリクエストという用語を使っている場合もある。

当時の用語の混乱は置いといて、現代的にには
機械語レベルでの値の受け渡しやメモリの配置は ABI で決めるべきことで
API はその上に構築される高レイヤな概念と解される場合が多いと思う。
ソフトウェア割込みを使うという規約は ABI に属して、
どのような値を渡してどんな効果があるかは API に属すと考えるべきじゃないかな。
0722デフォルトの名無しさん
垢版 |
2022/09/02(金) 09:12:32.54ID:K5Jq4B80
こんなのがあったんだけど

https://qiita.com/purigen/items/d68b146f341c41d260fc
c = c = testString.find_first_of(" ")

これってなんで2回も代入してりゅの???わからにゃいよ
0724デフォルトの名無しさん
垢版 |
2022/09/02(金) 10:15:17.31ID:K5Jq4B80
そっか誤植か〜
わかったニャン☆
0725デフォルトの名無しさん
垢版 |
2022/09/02(金) 10:29:24.82ID:J900FDad
Win32の頃はint2ehのだしな
描画はシステムメモリに書いてbitbltだし
APIと言うより割り込み棚
0726デフォルトの名無しさん
垢版 |
2022/09/02(金) 12:14:46.88ID:2iQGHF2d
g++で以下の警告のようなメッセージ(`note')が出るのですが
これは何を意味しているのでしょうか?
コンパイラはaarch64-linux-gnu-g++-10で
オプション-std=c++14に変えるとメッセージは出ません
またx86_64-linux-gnu-g++-10でコンパイルすると
-std=c++17でも-std=c++14でもメッセージは出ません
恐らくC++の規格の問題だと思いますのでこちらに書かせて頂きます
$ cat test.cpp
#include <cmath>
#include <utility>
using namespace std;
pair <double, double>
hoge (double p_x, double p_y)
{
return make_pair (p_x, p_y);
}
int main () {return 0;}
$ g++ -std=c++17 test.cpp
test.cpp: In function ‘std::pair<double, double> hoge(double, double)’:
test.cpp:6:29: note: parameter passing for argument of type ‘std::pair<double, double>’ when C++17 is enabled changed to match C++14 in GCC 10.1
6 | hoge (double p_x, double p_y)
| ^
0727デフォルトの名無しさん
垢版 |
2022/09/02(金) 13:54:12.27ID:gHt2MaJh
俺んとこでは -std=c++98 でも何も言ってこない
バージョンは g++ (Rev5, Built by MSYS2 project) 10.3.0

Microsoft(R) C/C++ Optimizing Compiler Version 19.33.31629 for x64 で /W4 にしても何も言ってこない
0729はちみつ餃子 ◆8X2XSCHEME
垢版 |
2022/09/02(金) 14:46:58.07ID:4QwPhwTb
>>726
言語仕様上は問題ないけど、どうやら特定の環境で起こる GCC のバグを修正した
ために ABI の辻褄が合わないかもしれないというような事情っぽい。
0730デフォルトの名無しさん
垢版 |
2022/09/02(金) 15:04:43.31ID:2iQGHF2d
>>727-729
有難うございます
難しすぎて書いてあることが良く分からんのですが
ABIなのでビルドし直せば問題ないと理解しました
みなさん凄い調査能力だな
0731はちみつ餃子 ◆8X2XSCHEME
垢版 |
2022/09/02(金) 15:06:04.63ID:4QwPhwTb
>>730
いや、エラーメッセージでググったら stackoverflow で背景の説明をしてるのが見つかったぞ。
0732デフォルトの名無しさん
垢版 |
2022/09/02(金) 18:13:40.07ID:/OwM2R8K
ω株 PI.3.14
0733デフォルトの名無しさん
垢版 |
2022/09/13(火) 14:35:12.50ID:pQsEVmxh
OSの板で聞くべきかもしらんが、終了シグナル受け取ったらメモリの中身を書き出して中断し、再びコマンドが叩かれたらメモリの中身を読み込んで途中から再開するみたいな仕組みを一番簡単にやる方法ってどんなですかね?
チェックポイント・リスタートっていうんでしょうか
0734はちみつ餃子 ◆8X2XSCHEME
垢版 |
2022/09/13(火) 15:19:18.69ID:w3MhG8uL
>>733
Linux とか BSD で昔はメモリをダンプするシステムコールがあったはずだが廃止されたんじゃなかったっけ。
Emacs でそのシステムコールを使ってたから色々とゴタゴタしたような記憶がある。
(そのシステムコールの名前が思い出せない……。 すまぬ。)

再開に必要な情報を適当にシリアライズして書き出すしかしょうがないんじゃないの。
0737デフォルトの名無しさん
垢版 |
2022/09/22(木) 16:50:54.43ID:MKlA3Ol3
おはこんばんわ
何度もお世話になっておりますが、今回も皆様のお知恵をお借りしたく書き込みをしております。
初歩的な質問かもしれませんが質問させてください!

私の質問は、動的な任意型を戻り値とする関数を作ることは可能でしょうか??という事です。
したい事は、
template <typename T>
T ret(int arg)
{
If(arg==0)return static_cast<hoge>(arg);
else if(arg==1)return static_cast<hage>(arg);
}
でホゲ型とホラン千秋型を引数によって変化させて返却したいのです……が、
私が見ても無理そうな感じなのです。ニパー
そもそもテンプレートってコンパイル時点で推察できないと無理ですよね?
この悩みに何か方法や別解があったりしたら教えていただきたく、スレ汚しを失礼しております。

感謝は先に申し上げておきます。
ありがとうございます!
0738デフォルトの名無しさん
垢版 |
2022/09/22(木) 17:27:40.84ID:vBAk//C3
>>737
一般的には型システムの健全性と安全性のために
そのような用途では代数的データ型(タグ付き共用体)を用いる
C++ではstd::variantであるがパターンマッチングなどの言語サポートがないため若干扱いにくい
0739はちみつ餃子 ◆8X2XSCHEME
垢版 |
2022/09/22(木) 19:28:31.52ID:He0eupRY
>>737
実行時の多相は抽象クラスを使うのが基本ということになってる。
その場合で言えば hoge と hage が共通のインターフェイスを持つ (抽象クラスを継承する) ようにクラス設計するのが普通。
まずは抽象クラスを学んでみて。

最初からクラス設計に関与することが出来ない場合 (既存のライブラリなので手を加えられないなど)
に動的に切り替える必要があるなら std::variant や std::any が使えるのだけれど……
使う箇所で元の型にキャストしなおしたり、 std::visit を経由したりで煩雑になりがち。
0741デフォルトの名無しさん
垢版 |
2022/09/22(木) 22:12:16.21ID:PsWl+Otb
>>737
argがコンパイル時点で決定しているのならやりようはあるが
実行時まで決まらないのならみなさんの言う通り
retをどう使うのか呼び出し側のコードを書いてみてよ
0743デフォルトの名無しさん
垢版 |
2022/09/23(金) 00:25:25.16ID:LrToOuio
any使えばクソコードは書けるがw

#include <iostream>
#include <any>
using namespace std;
struct hoge {
int value_;
hoge (int arg): value_ (arg) {}
std::ostream &output (std::ostream &os) {return os << value_;}
};
struct hage {
int value_;
hage (int arg): value_ (arg) {}
std::ostream &output (std::ostream &os) {return os << value_;}
};
std::any ret(int arg)
{
if(arg==0)return hoge (arg);
else if(arg==1)return hage (arg);
return std::any ();
}
int main () {
try {
any_cast <hoge> (ret (0)).output (cout) << endl;
any_cast <hage> (ret (1)).output (cout) << endl;
any_cast <hoge> (ret (1)).output (cout) << endl; // An exception will be thrown.
} catch (const std::bad_any_cast &) {
cerr << "std::bad_any_cast\n";
return -1;
}
return 0;
}
0744デフォルトの名無しさん
垢版 |
2022/09/23(金) 02:10:00.16ID:gD4It3Ab
Python や tcl のコードだな
0745デフォルトの名無しさん
垢版 |
2022/09/23(金) 02:31:56.65ID:LrToOuio
argがコンパイル時に決まってるなら例えば以下の通りにディスパッチ
Loki::Int2Typeって今はC++に入ってるっけ?
#include <iostream>
using namespace std;
namespace Loki {
template <int v>
struct Int2Type {
enum { value = v };
};
}
struct hoge {
int value_;
hoge (int arg): value_ (arg) {}
std::ostream &output (std::ostream &os) {return os << value_;}
};
struct hage {
int value_;
hage (int arg): value_ (arg) {}
std::ostream &output (std::ostream &os) {return os << value_;}
};
hoge ret(Loki::Int2Type <0> p){return hoge (Loki::Int2Type <0>::value);}
hage ret(Loki::Int2Type <1> p){return hage (Loki::Int2Type <1>::value);}
int main () {
ret (Loki::Int2Type <0> ()).output (cout) << endl;
ret (Loki::Int2Type <1> ()).output (cout) << endl;
return 0;
}
0746デフォルトの名無しさん
垢版 |
2022/09/23(金) 17:57:04.27ID:tVlOtcCS
>>738
>>739
返信ありがとうございます。
variantで返すかUnionのようなもので返すか、という事ですね。
Unionの存在を初めて知ったので、できれば使いたいと思います。
0747デフォルトの名無しさん
垢版 |
2022/09/23(金) 18:13:00.58ID:MklXD0R7
そういう用途でタグ無しunionは危険で不便な昔の遺物
どの言語でも安全で便利なタグ付きunionを用いる
C++はパターンマッチングが弱いのでそこを改善すればさらに便利になるはずだ
0749デフォルトの名無しさん
垢版 |
2022/09/23(金) 23:41:53.30ID:icgBEU6J
anonymous union というとなにかこう、不穏なひびきがあるな
集団で徒党をくんでハッキングする的な
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況