前スレ
C++相談室 part157
https://mevius.5ch.net/test/read.cgi/tech/1628474251/
C++相談室 part158
■ このスレッドは過去ログ倉庫に格納されています
2021/11/15(月) 18:49:18.44ID:I69rZ/Of
716デフォルトの名無しさん
2022/01/23(日) 17:32:20.44ID:CWW/bMN0 >>711
検証頂いてるところ環境を明記しておらず申し訳ありません
Visual Studio 2022、C++20で発生している現象です
#include "test.h"
int main() //main.cpp
{
A::Initialize(); //printf("%p\n", &A::Field1);をするだけのstatic inline関数
A::Func1(); //printf("%p\n", &A::Field1);をするだけのstatic関数(__declspec(noinline)をし実装はtest.cpp)
}
struct名をつければInitializeの出力とFunc1の出力は一致、無名structにしたら不一致
本当に他は一切いじらずに名前の有無だけで変わります
検証頂いてるところ環境を明記しておらず申し訳ありません
Visual Studio 2022、C++20で発生している現象です
#include "test.h"
int main() //main.cpp
{
A::Initialize(); //printf("%p\n", &A::Field1);をするだけのstatic inline関数
A::Func1(); //printf("%p\n", &A::Field1);をするだけのstatic関数(__declspec(noinline)をし実装はtest.cpp)
}
struct名をつければInitializeの出力とFunc1の出力は一致、無名structにしたら不一致
本当に他は一切いじらずに名前の有無だけで変わります
717デフォルトの名無しさん
2022/01/23(日) 17:54:11.09ID:QgynSmAQ 現象を再現させる最小限のコードを全セット載せないと先には進まんて
始めからそうしてればこんなにいろいろ書かずに済んでいる
始めからそうしてればこんなにいろいろ書かずに済んでいる
718デフォルトの名無しさん
2022/01/23(日) 18:17:03.90ID:K/S7vg9Z >>714 wandbox でも -v 追加で as が2つ test.cpp と prog.cc と別で走ってるのまでは見た。
719デフォルトの名無しさん
2022/01/23(日) 18:18:38.46ID:K/S7vg9Z >>716
MSVC のバグっぽいね。おとなしく名前つけて回避しつつ、できればバグ報告しとくのがいいんじゃない。
MSVC のバグっぽいね。おとなしく名前つけて回避しつつ、できればバグ報告しとくのがいいんじゃない。
720デフォルトの名無しさん
2022/01/23(日) 20:02:54.49ID:QgynSmAQ721デフォルトの名無しさん
2022/01/23(日) 20:09:37.28ID:QgynSmAQ >>718
それは昔からgccを使ってる人は知ってるけど、そういう話じゃない
明らかに不自然な位置にソースファイルを指定して無理矢理2個同時にコンパイルする上に、引用されて3個はできない
つまり想定された使い方ではないということ
おまけに処理系やそのバージョンを複数変えられることが比較的便利なwandboxで、処理系を変えると確認が必要になるやり方はどうかと言っただけ
まあ、分かってるとは思うんだが
それは昔からgccを使ってる人は知ってるけど、そういう話じゃない
明らかに不自然な位置にソースファイルを指定して無理矢理2個同時にコンパイルする上に、引用されて3個はできない
つまり想定された使い方ではないということ
おまけに処理系やそのバージョンを複数変えられることが比較的便利なwandboxで、処理系を変えると確認が必要になるやり方はどうかと言っただけ
まあ、分かってるとは思うんだが
722デフォルトの名無しさん
2022/01/23(日) 20:24:03.88ID:QgynSmAQ とりあえず、710のコードでVS2019を調べた結果、再現は確認できた。
ただし、コンパイルオプション次第で現象が出たり出なかったりする。
VS2022でもないし、VSはコンパイルリンクオプションがデフォルトで大量に指定されてて確認が面倒なのでそれ以上は放棄した。
以下のコードではpermissive-オプションの有無で現象が再現したりしなかったりするが、デフォルト時だとその切替えで現象は変わらないので、一次原因ではないと思う。
ただし、コンパイルオプション次第で現象が出たり出なかったりする。
VS2022でもないし、VSはコンパイルリンクオプションがデフォルトで大量に指定されてて確認が面倒なのでそれ以上は放棄した。
以下のコードではpermissive-オプションの有無で現象が再現したりしなかったりするが、デフォルト時だとその切替えで現象は変わらないので、一次原因ではないと思う。
723デフォルトの名無しさん
2022/01/23(日) 20:24:36.31ID:hHkcGLX7 保守できないような書き方して自分の仕事を守る。PGの当然の権利ですよね。
724デフォルトの名無しさん
2022/01/23(日) 20:25:06.27ID:QgynSmAQ > main.cpp (
@echo void sub1^(^);
@echo void sub2^(^);
@echo int main^(^) {
@echo sub1^(^);
@echo sub2^(^);
@echo return 0;
@echo }
)
> sub1.cpp (
@echo #include^<iostream^>
@echo struct A { static inline struct { int value; } Field1; };
@echo void sub1^(^) {
@echo std::cout ^<^< std::hex ^<^< ^&A::Field1 ^<^< std::endl;
@echo }
)
> sub2.cpp (
@echo #include^<iostream^>
@echo struct A { static inline struct { int value; } Field1; };
@echo void sub2^(^) {
@echo std::cout ^<^< std::hex ^<^< ^&A::Field1 ^<^< std::endl;
@echo }
)
> sample.mak (
@echo CXXFLAGS = /MDd /EHsc /std:c^+^+17 /permissive-
@echo .cpp.obj:
@echo $^(CXX^) $^(CXXFLAGS^) /c $^<
@echo sample.exe: main.obj sub1.obj sub2.obj
@echo link /OUT:$@ $^*^*
)
nmake /f sample.mak
rem バッチファイルもnmakeもよく知りません。
@echo void sub1^(^);
@echo void sub2^(^);
@echo int main^(^) {
@echo sub1^(^);
@echo sub2^(^);
@echo return 0;
@echo }
)
> sub1.cpp (
@echo #include^<iostream^>
@echo struct A { static inline struct { int value; } Field1; };
@echo void sub1^(^) {
@echo std::cout ^<^< std::hex ^<^< ^&A::Field1 ^<^< std::endl;
@echo }
)
> sub2.cpp (
@echo #include^<iostream^>
@echo struct A { static inline struct { int value; } Field1; };
@echo void sub2^(^) {
@echo std::cout ^<^< std::hex ^<^< ^&A::Field1 ^<^< std::endl;
@echo }
)
> sample.mak (
@echo CXXFLAGS = /MDd /EHsc /std:c^+^+17 /permissive-
@echo .cpp.obj:
@echo $^(CXX^) $^(CXXFLAGS^) /c $^<
@echo sample.exe: main.obj sub1.obj sub2.obj
@echo link /OUT:$@ $^*^*
)
nmake /f sample.mak
rem バッチファイルもnmakeもよく知りません。
725デフォルトの名無しさん
2022/01/23(日) 20:34:19.55ID:K/S7vg9Z >>721 ソース3つ以上もできるよ。 https://wandbox.org/permlink/UgIc9mFrs59059jq
726デフォルトの名無しさん
2022/01/23(日) 20:40:05.18ID:QgynSmAQ >>723
そういうのはプロジェクトの方針だと思うので、ここで話す内容ではないと思うよ
そういうのはプロジェクトの方針だと思うので、ここで話す内容ではないと思うよ
727デフォルトの名無しさん
2022/01/23(日) 20:45:20.80ID:QgynSmAQ >>725
改行と空白で違うのかよw b烽、知るかってャ激xルだけど、bりがと
bニりあえず>>710を載っけとく
https://wandbox.org/permlink/e8khwggKe00rtekJ
改行と空白で違うのかよw b烽、知るかってャ激xルだけど、bりがと
bニりあえず>>710を載っけとく
https://wandbox.org/permlink/e8khwggKe00rtekJ
728デフォルトの名無しさん
2022/01/23(日) 20:49:22.51ID:QgynSmAQ >>723
>>727は何故だか文字が化けてたので一応書き直しとく。
改行と空白で違うのかよw もう知るかってレベルだけど、ありがと
とりあえず>>710を載っけとく
https://wandbox.org/permlink/e8khwggKe00rtekJ
>>727は何故だか文字が化けてたので一応書き直しとく。
改行と空白で違うのかよw もう知るかってレベルだけど、ありがと
とりあえず>>710を載っけとく
https://wandbox.org/permlink/e8khwggKe00rtekJ
729デフォルトの名無しさん
2022/01/24(月) 19:27:55.24ID:WxnVLAIm C++11から、C++20までの変更点を解説した入門書を年末に買ったのだが(C++は書けるよ)、まだ読む気になれないw
「今更C++か、pythonでいいだろ」と悪魔が囁くw
「今更C++か、pythonでいいだろ」と悪魔が囁くw
730デフォルトの名無しさん
2022/01/24(月) 19:42:15.63ID:nLfFXIoN c++cliについてネットに解説している情報あまり無いですが、まとまってるサイトとかないですかね。
731デフォルトの名無しさん
2022/01/24(月) 20:29:40.39ID:kghIRcG8732デフォルトの名無しさん
2022/01/25(火) 08:07:34.25ID:m+e4/QVD めずらしい
変態に興味あるとは
VisualJ++とかワケワカだったぜw
変態に興味あるとは
VisualJ++とかワケワカだったぜw
733デフォルトの名無しさん
2022/01/26(水) 05:15:43.56ID:DGJ/MazB 1秒おきのタイマーでtmDraw()を呼んで右に伸びる四角を描くプログラムです。VSCでMFC未使用。
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_PAINT:
OnPaint(hWnd);
break;
case WM_CREATE:
SetTimer(hWnd,1,1000,(TIMERPROC)NULL); //タイマー定義
break;
case WM_TIMER: //タイマー
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);
tmDraw(hdc); //これを呼んで描画
EndPaint(hWnd, &ps);
}
break;
return 0;
}
static VOID tmDraw(HDC hDC)
{
SetDCPenColor(hDC, RGB(0x99, 0x66, 0x00)); //ここが呼ばれてるのは確認
SetDCBrushColor(hDC, RGB(0xFF, 0xCC, 0x00));
Rectangle(hDC, SIZE16(0, 0, cx++, 6)); //伸びる描画
}
最初の1回の描画はされます。タイマーでtmDraw()が呼ばれてるのは確認しています。
呼ばれて描画されてるはずなのですが、実際の画面は更新されず四角は伸びません。
windowサイズを手動で変えていくと四角は右に伸びていき更新されます。
タイマーでtmDraw()が呼ばれた時に描画だけでなく画面の更新もされるようにするにはどうすればよいですか?
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_PAINT:
OnPaint(hWnd);
break;
case WM_CREATE:
SetTimer(hWnd,1,1000,(TIMERPROC)NULL); //タイマー定義
break;
case WM_TIMER: //タイマー
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);
tmDraw(hdc); //これを呼んで描画
EndPaint(hWnd, &ps);
}
break;
return 0;
}
static VOID tmDraw(HDC hDC)
{
SetDCPenColor(hDC, RGB(0x99, 0x66, 0x00)); //ここが呼ばれてるのは確認
SetDCBrushColor(hDC, RGB(0xFF, 0xCC, 0x00));
Rectangle(hDC, SIZE16(0, 0, cx++, 6)); //伸びる描画
}
最初の1回の描画はされます。タイマーでtmDraw()が呼ばれてるのは確認しています。
呼ばれて描画されてるはずなのですが、実際の画面は更新されず四角は伸びません。
windowサイズを手動で変えていくと四角は右に伸びていき更新されます。
タイマーでtmDraw()が呼ばれた時に描画だけでなく画面の更新もされるようにするにはどうすればよいですか?
734デフォルトの名無しさん
2022/01/26(水) 06:35:00.77ID:R08bxH5q WM_TIMERでBeginPaintはおかしいぞ
WM_PAINT専用なんだから
無効領域ないのにBeginPaintしたらあかん
[誘導] 続きはこっちでな
Win32API質問箱 Build127
https://mevius.5ch.net/test/read.cgi/tech/1639053176/
WM_PAINT専用なんだから
無効領域ないのにBeginPaintしたらあかん
[誘導] 続きはこっちでな
Win32API質問箱 Build127
https://mevius.5ch.net/test/read.cgi/tech/1639053176/
735デフォルトの名無しさん
2022/01/26(水) 07:17:52.16ID:T9eKedNN InvalidateRectとかGetDC〜ReleaseDCだっけ?
736デフォルトの名無しさん
2022/01/26(水) 07:50:18.18ID:td9ayUMw アップデートはマイクロソフトがやりたい時にやる
という基本理念を理解していないようだね
という基本理念を理解していないようだね
737デフォルトの名無しさん
2022/01/26(水) 09:14:18.23ID:m89Xdimf WM_TIMERでInvalidateRectしておくとWindowsがWM_PAINT呼んでくれるからそこで描画するんだっけ
738デフォルトの名無しさん
2022/01/26(水) 09:17:55.57ID:qvNTvCwo そもそもこれCだろ…
WinMainから書く超基礎的コードをここで聞く頭がもうね
WinMainから書く超基礎的コードをここで聞く頭がもうね
739デフォルトの名無しさん
2022/01/26(水) 09:26:13.12ID:WR8doP3S べつにアイドルループで描画してもいいんだよ
メッセージの処理さえ忘れずにピークしてこなせば
メッセージの処理さえ忘れずにピークしてこなせば
740デフォルトの名無しさん
2022/01/26(水) 09:32:54.79ID:g/1zEXcm >>738
スレチなのは確かだが、いちいち見下して何がしたいんだお前
スレチなのは確かだが、いちいち見下して何がしたいんだお前
741デフォルトの名無しさん
2022/01/26(水) 09:36:18.65ID:dkXO6/An どこにでもいるんだよ
自分より下の者をいたぶることで
安心しようとするチンピラ気質なやつは
自分より下の者をいたぶることで
安心しようとするチンピラ気質なやつは
742デフォルトの名無しさん
2022/01/26(水) 10:21:44.17ID:qvNTvCwo だってココ定期的に湧くじゃん
Windows使っててWin32APIの使い方聞いてくるC++ほとんど知らない自称天才のバカ
同じやつだよきっと
毎回Win32APIに誘導されてるってのにな
Windows使っててWin32APIの使い方聞いてくるC++ほとんど知らない自称天才のバカ
同じやつだよきっと
毎回Win32APIに誘導されてるってのにな
743デフォルトの名無しさん
2022/01/26(水) 10:46:25.17ID:g/1zEXcm あー、言われれば確かにそんなの居たっけ・・
でもまぁ同一人物とは限らないんだし誘導して終わりでいんじゃね
たまに見当違いの初心者は入ってくるし(DirectXスレにDirectXランタイムのインスコの仕方聞きにきた猛者が居た
でもまぁ同一人物とは限らないんだし誘導して終わりでいんじゃね
たまに見当違いの初心者は入ってくるし(DirectXスレにDirectXランタイムのインスコの仕方聞きにきた猛者が居た
744デフォルトの名無しさん
2022/01/26(水) 10:59:27.08ID:vhiSf69I 733 すいません、そっちのスレは知りませんでした
そちらで聞き直します
そちらで聞き直します
745デフォルトの名無しさん
2022/01/26(水) 11:06:01.05ID:qvNTvCwo DirectXスレにDirectXランタイムのインスコの仕方聞くのはまだ仕方ない話
ドライバ固有の問題に当たっているなら専門家に聞いた方がいいだろう
自称天才のバカである確率の方が高いと思うし、高確率で単発IDで荒らすバカも同じだろうし、わざわざレスしてくるやつも同じだろうから、バカにはバカと言ってあげた方が親切
ドライバ固有の問題に当たっているなら専門家に聞いた方がいいだろう
自称天才のバカである確率の方が高いと思うし、高確率で単発IDで荒らすバカも同じだろうし、わざわざレスしてくるやつも同じだろうから、バカにはバカと言ってあげた方が親切
746デフォルトの名無しさん
2022/01/26(水) 12:02:29.99ID:dkXO6/An 誘導ももう済んでるのに
どうしても喧嘩言葉を使いたくて沸いてくる
三下のそのまた下の家畜はいいのか
どうしても喧嘩言葉を使いたくて沸いてくる
三下のそのまた下の家畜はいいのか
747デフォルトの名無しさん
2022/01/26(水) 13:23:53.73ID:m89Xdimf DirectXランタイムが許されるならWin32 APIだって許してあげなよ
製品名はVisual C++だし、既定の拡張子 .cpp なんだから Win32はC++ではなくCだって言ってもしょうがない
製品名はVisual C++だし、既定の拡張子 .cpp なんだから Win32はC++ではなくCだって言ってもしょうがない
748デフォルトの名無しさん
2022/01/26(水) 23:06:08.50ID:UuxYD5f6 いかにも漏れは天才だが
さすがにWinMain()から書くようなバリバリWindowsアプリの質問はしないかなあ、、、
漏れの言ってることがまるで理解できない低レヴェル凡人の反発を招くことはあってもな
さすがにWinMain()から書くようなバリバリWindowsアプリの質問はしないかなあ、、、
漏れの言ってることがまるで理解できない低レヴェル凡人の反発を招くことはあってもな
749デフォルトの名無しさん
2022/01/27(木) 10:59:27.25ID:Z+Vqme3O 天才でも質問することあるんですね
回答者は超天才?
回答者は超天才?
750デフォルトの名無しさん
2022/01/27(木) 11:49:44.22ID:avZQ9Wm7 いかにも
私が超天才だが
ってどっかのハンコ貰いにいく人事のCMみたい
私が超天才だが
ってどっかのハンコ貰いにいく人事のCMみたい
751デフォルトの名無しさん
2022/01/29(土) 15:04:46.13ID:mo0R2qbj 大学の課題でコンパイルエラーになるので教えてもらいないでしょうか
main.cppで、B<A> b; b.display(); のようにAを使っています。
g++ -Wall -std=c++17 -g -o test a.cpp main.cpp
undefined reference to `operator<<(ostream&, A const&)'
※コンストラクタなどの関数定義は省略してます。
■ a.h
class A {
public:
string m_str;
friend ostream & operator << (ostream &os, const A &a);
};
■ a.cpp
ostream & operator << (ostream &os, const A &a)
{
os << a.m_str << endl;
return os;
}
■ b.h
template <typename T>
class B
{
public:
void display(ostream &os = cout) const;
T m_dummy;
};
template <typename T>
void B<T>::display(ostream &os) const
{
os << m_dummy << endl; // ここが undefined referenceエラー
}
main.cppで、B<A> b; b.display(); のようにAを使っています。
g++ -Wall -std=c++17 -g -o test a.cpp main.cpp
undefined reference to `operator<<(ostream&, A const&)'
※コンストラクタなどの関数定義は省略してます。
■ a.h
class A {
public:
string m_str;
friend ostream & operator << (ostream &os, const A &a);
};
■ a.cpp
ostream & operator << (ostream &os, const A &a)
{
os << a.m_str << endl;
return os;
}
■ b.h
template <typename T>
class B
{
public:
void display(ostream &os = cout) const;
T m_dummy;
};
template <typename T>
void B<T>::display(ostream &os) const
{
os << m_dummy << endl; // ここが undefined referenceエラー
}
752751
2022/01/29(土) 15:50:41.96ID:mo0R2qbj 失礼、自己解決しました。
namespaceをa.hだけ括って、a.cppに入れ忘れましたw
namespaceをa.hだけ括って、a.cppに入れ忘れましたw
753デフォルトの名無しさん
2022/01/31(月) 02:23:38.98ID:iz74n4+D 下の★1を★2のように書きたいんだけど、どうやって書けばいいのか
教えてぇ
#include <iostream>
template <typename T>
auto Sum(T h)
{
return h;
}
template <typename Head,typename... Rests>
auto Sum(Head head,Rests... rests)
{
return head + Sum(rests...);
}
template<class F,class... Args>
auto
foo(F&& f,Args... args)
{
return f(args...);
}
int main( int argc, char *argv[] )
{
std::cout << foo(Sum<int,int,int>,1,2,3) << "\n";//★1
//std::cout << foo(Sum,1,2,3) << "\n"; //★2
}
教えてぇ
#include <iostream>
template <typename T>
auto Sum(T h)
{
return h;
}
template <typename Head,typename... Rests>
auto Sum(Head head,Rests... rests)
{
return head + Sum(rests...);
}
template<class F,class... Args>
auto
foo(F&& f,Args... args)
{
return f(args...);
}
int main( int argc, char *argv[] )
{
std::cout << foo(Sum<int,int,int>,1,2,3) << "\n";//★1
//std::cout << foo(Sum,1,2,3) << "\n"; //★2
}
755デフォルトの名無しさん
2022/01/31(月) 04:18:19.49ID:o5RGUewZ なんでも適当に済ますクセ
高級言語に慣れすぎの弊害
高級言語に慣れすぎの弊害
756デフォルトの名無しさん
2022/01/31(月) 14:49:02.61ID:y2HjUy1l >>753
・まず、Sumを多重定義にする必要性は特にないはず
・次に、fooが関数でSumが関数テンプレートの場合、
関数の実引数として具現しないテンプレートは渡せない
だからfooの代わりにstd::bindを使っても解決しない
・テンプレートテンプレート仮引数を使っても
クラステンプレートしか渡せず関数テンプレートは不可
こうなるとマクロくらいしか手がない
#define foo(func, ...) func(__VA_ARGS__)
・まず、Sumを多重定義にする必要性は特にないはず
・次に、fooが関数でSumが関数テンプレートの場合、
関数の実引数として具現しないテンプレートは渡せない
だからfooの代わりにstd::bindを使っても解決しない
・テンプレートテンプレート仮引数を使っても
クラステンプレートしか渡せず関数テンプレートは不可
こうなるとマクロくらいしか手がない
#define foo(func, ...) func(__VA_ARGS__)
757デフォルトの名無しさん
2022/01/31(月) 16:24:09.60ID:4mzN2AL1 戻り値のautoが決まらないってことでしょ?autoをdouble固定にしてReturnをなくせば通る
#include <iostream>
auto sum() {return 0;}
template<typename Head> auto sum(Head head) {return head;}
template<typename Head, typename... Tails> auto sum(Head head, Tails ...tails) {return head + sum(tails...);}
template<typename Return, typename... Args> Return wrap(Return (*f)(Args...), Args ...args) {return f(args...);}
int main( int argc, char *argv[] ) {
std::cout << sum(1,2.1) << std::endl;
std::cout << wrap(static_cast<double(*)(int,double)>(sum), 1,2.1) << std::endl;
std::cout << wrap(sum<int,double>, 1,2.1) << std::endl;
std::cout << wrap(sum, 1,2.1) << std::endl;
return 0;
}
// /usr/bin/g++ -fdiagnostics-color=always -g /home/user/cpp/autoreturn/sample.cpp -o /home/user/cpp/autoreturn/sample
// /home/user/cpp/autoreturn/sample.cpp: In function ‘int main(int, char**)’:
// /home/user/cpp/autoreturn/sample.cpp:10:29: error: no matching function for call to ‘wrap(<unresolved overloaded function type>, int, double)’
// 10 | std::cout << wrap(sum, 1,2.1) << std::endl;
// | ^
// /home/user/cpp/autoreturn/sample.cpp:5:52: note: candidate: ‘template<class Return, class ... Args> Return wrap(Return (*)(Args ...), Args ...)’
// 5 | template<typename Return, typename... Args> Return wrap(Return (*f)(Args...), Args ...args) {return f(args...);}
// | ^~~~
// /home/user/cpp/autoreturn/sample.cpp:5:52: note: template argument deduction/substitution failed:
// /home/user/cpp/autoreturn/sample.cpp:10:29: note: couldn’t deduce template parameter ‘Return’
// 10 | std::cout << wrap(sum, 1,2.1) << std::endl;
// | ^
#include <iostream>
auto sum() {return 0;}
template<typename Head> auto sum(Head head) {return head;}
template<typename Head, typename... Tails> auto sum(Head head, Tails ...tails) {return head + sum(tails...);}
template<typename Return, typename... Args> Return wrap(Return (*f)(Args...), Args ...args) {return f(args...);}
int main( int argc, char *argv[] ) {
std::cout << sum(1,2.1) << std::endl;
std::cout << wrap(static_cast<double(*)(int,double)>(sum), 1,2.1) << std::endl;
std::cout << wrap(sum<int,double>, 1,2.1) << std::endl;
std::cout << wrap(sum, 1,2.1) << std::endl;
return 0;
}
// /usr/bin/g++ -fdiagnostics-color=always -g /home/user/cpp/autoreturn/sample.cpp -o /home/user/cpp/autoreturn/sample
// /home/user/cpp/autoreturn/sample.cpp: In function ‘int main(int, char**)’:
// /home/user/cpp/autoreturn/sample.cpp:10:29: error: no matching function for call to ‘wrap(<unresolved overloaded function type>, int, double)’
// 10 | std::cout << wrap(sum, 1,2.1) << std::endl;
// | ^
// /home/user/cpp/autoreturn/sample.cpp:5:52: note: candidate: ‘template<class Return, class ... Args> Return wrap(Return (*)(Args ...), Args ...)’
// 5 | template<typename Return, typename... Args> Return wrap(Return (*f)(Args...), Args ...args) {return f(args...);}
// | ^~~~
// /home/user/cpp/autoreturn/sample.cpp:5:52: note: template argument deduction/substitution failed:
// /home/user/cpp/autoreturn/sample.cpp:10:29: note: couldn’t deduce template parameter ‘Return’
// 10 | std::cout << wrap(sum, 1,2.1) << std::endl;
// | ^
758デフォルトの名無しさん
2022/01/31(月) 20:55:29.83ID:ExACmeMg >>753
auto Sum = [](auto head, auto... rests) { return (head + ... + rests); };
auto Sum = [](auto head, auto... rests) { return (head + ... + rests); };
759デフォルトの名無しさん
2022/01/31(月) 22:50:37.06ID:67CF9RIT ラッパークラスを通せば似たようなことはできそう。
struct Wrapper_ {
constexpr static auto doit = [](auto... args) { return Sum(args...); };
} wrapper;
int main( int, char ** )
{
std::cout << foo(wrapper.doit,1,2,3) << "\n";
}
struct Wrapper_ {
constexpr static auto doit = [](auto... args) { return Sum(args...); };
} wrapper;
int main( int, char ** )
{
std::cout << foo(wrapper.doit,1,2,3) << "\n";
}
760デフォルトの名無しさん
2022/02/01(火) 04:38:50.89ID:X9o0BiPI クラスは不要だった。
ラムダなら通るみたいだから、 >>758 みたいに元の関数をラムダで書くか、
auto wrapper = [](auto... args) { return Sum(args...); };
みたいなラッパー関数オブジェクト通すかってあたりで足りそう。
// 最初実験してたとき、ラムダ式にしただけだとエラー出てた気がしたんだけど、今やると問題なく通る…
ラムダなら通るみたいだから、 >>758 みたいに元の関数をラムダで書くか、
auto wrapper = [](auto... args) { return Sum(args...); };
みたいなラッパー関数オブジェクト通すかってあたりで足りそう。
// 最初実験してたとき、ラムダ式にしただけだとエラー出てた気がしたんだけど、今やると問題なく通る…
761デフォルトの名無しさん
2022/02/01(火) 05:38:09.33ID:wGiSz27Y おお、auto... なんてできたのか
762デフォルトの名無しさん
2022/02/01(火) 07:53:40.48ID:vPA4cgbg >>757にラムダ入れた。
ラムダはオーバーロードできずC++17の畳み込み式が必須で引数なしが表現できないが、選択の手間がない。
#include <iostream>
auto sum() {return 0;}
template<typename Head> auto sum(Head head) {return head;}
template<typename Head, typename... Tails> auto sum(Head head, Tails ...tails) {return head + sum(tails...);}
template<typename Return, typename... Args> Return wrap(Return (*f)(Args...), Args ...args) {return f(args...);}
auto lambda_sum = [](auto head, auto ...tails) {return (head + ... + tails);}; // 追加
auto lambda_wrap = [](auto f, auto ...args) {return f(args...);}; // 追加
int main( int argc, char *argv[] ) {
std::cout << sum() << std::endl; // 追加
std::cout << sum(1) << std::endl; // 追加
std::cout << sum(1,2.1) << std::endl;
std::cout << wrap(static_cast<double(*)(int,double)>(sum), 1,2.1) << std::endl;
std::cout << wrap(sum<int,double>, 1,2.1) << std::endl;
// std::cout << wrap(sum, 1,2.1) << std::endl; // エラー
// lambda版追加
// std::cout << lambda_sum() << std::endl; // エラー
std::cout << lambda_sum(1) << std::endl; // 追加
std::cout << lambda_sum(1,2.1) << std::endl;
std::cout << lambda_wrap(static_cast<double(*)(int,double)>(sum), 1,2.1) << std::endl;
std::cout << lambda_wrap(static_cast<double(*)(int,double)>(lambda_sum), 1,2.1) << std::endl;
std::cout << lambda_wrap(sum<int,double>, 1,2.1) << std::endl;
// std::cout << lambda_wrap(lambda_sum<int,double>, 1,2.1) << std::endl; // not template
// std::cout << lambda_wrap(sum, 1,2.1) << std::endl; // エラー
std::cout << lambda_wrap(lambda_sum, 1,2.1) << std::endl;
return 0;
}
ラムダはオーバーロードできずC++17の畳み込み式が必須で引数なしが表現できないが、選択の手間がない。
#include <iostream>
auto sum() {return 0;}
template<typename Head> auto sum(Head head) {return head;}
template<typename Head, typename... Tails> auto sum(Head head, Tails ...tails) {return head + sum(tails...);}
template<typename Return, typename... Args> Return wrap(Return (*f)(Args...), Args ...args) {return f(args...);}
auto lambda_sum = [](auto head, auto ...tails) {return (head + ... + tails);}; // 追加
auto lambda_wrap = [](auto f, auto ...args) {return f(args...);}; // 追加
int main( int argc, char *argv[] ) {
std::cout << sum() << std::endl; // 追加
std::cout << sum(1) << std::endl; // 追加
std::cout << sum(1,2.1) << std::endl;
std::cout << wrap(static_cast<double(*)(int,double)>(sum), 1,2.1) << std::endl;
std::cout << wrap(sum<int,double>, 1,2.1) << std::endl;
// std::cout << wrap(sum, 1,2.1) << std::endl; // エラー
// lambda版追加
// std::cout << lambda_sum() << std::endl; // エラー
std::cout << lambda_sum(1) << std::endl; // 追加
std::cout << lambda_sum(1,2.1) << std::endl;
std::cout << lambda_wrap(static_cast<double(*)(int,double)>(sum), 1,2.1) << std::endl;
std::cout << lambda_wrap(static_cast<double(*)(int,double)>(lambda_sum), 1,2.1) << std::endl;
std::cout << lambda_wrap(sum<int,double>, 1,2.1) << std::endl;
// std::cout << lambda_wrap(lambda_sum<int,double>, 1,2.1) << std::endl; // not template
// std::cout << lambda_wrap(sum, 1,2.1) << std::endl; // エラー
std::cout << lambda_wrap(lambda_sum, 1,2.1) << std::endl;
return 0;
}
763デフォルトの名無しさん
2022/02/01(火) 22:23:26.64ID:rdLB3H0G c++では
sz=120;
char dt[sz];
このように配列のサイズを変数の可変サイズで指定することはできないんですか?
これを実現する方法は何かありませんか?
sz=120;
char dt[sz];
このように配列のサイズを変数の可変サイズで指定することはできないんですか?
これを実現する方法は何かありませんか?
764デフォルトの名無しさん
2022/02/01(火) 22:43:02.67ID:rdLB3H0G 自己解決しました
しかし dt[10][d] のように2次元以上はjavaのような動的変動はできないんですね
しかし dt[10][d] のように2次元以上はjavaのような動的変動はできないんですね
765デフォルトの名無しさん
2022/02/01(火) 23:27:31.22ID:fhOfpvRh vector使わんの?
766デフォルトの名無しさん
2022/02/01(火) 23:28:28.99ID:hJiWfYJV 配列使わんし
767デフォルトの名無しさん
2022/02/01(火) 23:30:45.06ID:Sh1zYLGa768デフォルトの名無しさん
2022/02/02(水) 10:03:42.12ID:pPu7Tazo コンストラクタ・テンプレートでテンプレート実引数を推定させず明示的に与えるのはどう書く?
struct some_class
{
template <class A> some_class(int) {}
};
int main()
{
some_class obj<void>(1); //error
}
struct some_class
{
template <class A> some_class(int) {}
};
int main()
{
some_class obj<void>(1); //error
}
769デフォルトの名無しさん
2022/02/02(水) 12:11:02.47ID:ryNE78sg >>768
コンストラクタには明示的に型引数を渡せない
コンストラクタには明示的に型引数を渡せない
770デフォルトの名無しさん
2022/02/02(水) 12:36:54.65ID:pPu7Tazo そっか。。。残念
thx >>769
thx >>769
771デフォルトの名無しさん
2022/02/02(水) 12:56:51.10ID:X/91R13x ファイルサイズを取得しようとしていろいろサイトを参考にして次のようにしたのですが
std::filesystem::file_size(path)
filesystemのところに赤線が出て使用できません
これらは記述しています
#include <iostream>
#include <fstream>
#include <filesystem>
使っているのはCommunity 2019です
filesystemが使えないのはなぜでしょう?
std::filesystem::file_size(path)
filesystemのところに赤線が出て使用できません
これらは記述しています
#include <iostream>
#include <fstream>
#include <filesystem>
使っているのはCommunity 2019です
filesystemが使えないのはなぜでしょう?
772デフォルトの名無しさん
2022/02/02(水) 13:02:34.63ID:ryNE78sg773デフォルトの名無しさん
2022/02/02(水) 13:34:32.24ID:pPu7Tazo >>771
/std:c++17は指定してる?
/std:c++17は指定してる?
774デフォルトの名無しさん
2022/02/02(水) 13:43:30.57ID:X/91R13x ありがとうございます C++17指定できました
775デフォルトの名無しさん
2022/02/03(木) 12:49:10.84ID:d1XPVqCl filesystemは、できればC++20モードで使いたい
file_clockまわりがC++17ではgdgdだから
file_clockまわりがC++17ではgdgdだから
776デフォルトの名無しさん
2022/02/04(金) 13:06:35.94ID:ovGR74Kw 小文字に変換するプログラムです
string toLowerCase(const string& str)
{
string lower = str;
std::transform(lower.begin(), lower.end(), lower.begin(), std::tolower);
return lower;
}
実行するとstd::transform 一致するオーバーロードする関数が見つかりません、とか
6引数が必要です 4が設定されてます、とか出て
実行できません
これは何が問題なのでしょうか?
string toLowerCase(const string& str)
{
string lower = str;
std::transform(lower.begin(), lower.end(), lower.begin(), std::tolower);
return lower;
}
実行するとstd::transform 一致するオーバーロードする関数が見つかりません、とか
6引数が必要です 4が設定されてます、とか出て
実行できません
これは何が問題なのでしょうか?
777デフォルトの名無しさん
2022/02/04(金) 13:07:58.25ID:N/NFryku tolowerが多重定義関数だからじゃね?
778デフォルトの名無しさん
2022/02/04(金) 13:22:13.60ID:ovGR74Kw 自分では他に定義してないんですがどこで定義されてるんでしょう
779はちみつ餃子 ◆8X2XSCHEME
2022/02/04(金) 13:28:07.50ID:RpLWwySn >>776
ちょうど >>658 で同じような事例が出ている。
std::tolower は cctype ヘッダと locale ヘッダにそれぞれあって
locale ヘッダのほうが関数テンプレートだし二引数なのでこの場の都合に合わない。
なんらかの方法でどれを使うのか選択する必要があり、
たとえば static_cast などが使える。
ただ、 >>661 が提示しているようにデフォルト引数が追加される可能性があったりもするので
static_cast よりはラムダ式を経由するほうが安心できるスタイルかもね。
#include <iostream>
#include <string>
#include <algorithm>
#include <cctype>
std::string toLowerCase(const std::string& str)
{
std::string lower;
std::transform(std::begin(str), std::end(str), std::back_inserter(lower), static_cast<int(*)(int)>(std::tolower));
return lower;
}
int main(void) {
std::cout << toLowerCase("abcDEfgHi") << std::endl;
}
ちょうど >>658 で同じような事例が出ている。
std::tolower は cctype ヘッダと locale ヘッダにそれぞれあって
locale ヘッダのほうが関数テンプレートだし二引数なのでこの場の都合に合わない。
なんらかの方法でどれを使うのか選択する必要があり、
たとえば static_cast などが使える。
ただ、 >>661 が提示しているようにデフォルト引数が追加される可能性があったりもするので
static_cast よりはラムダ式を経由するほうが安心できるスタイルかもね。
#include <iostream>
#include <string>
#include <algorithm>
#include <cctype>
std::string toLowerCase(const std::string& str)
{
std::string lower;
std::transform(std::begin(str), std::end(str), std::back_inserter(lower), static_cast<int(*)(int)>(std::tolower));
return lower;
}
int main(void) {
std::cout << toLowerCase("abcDEfgHi") << std::endl;
}
780デフォルトの名無しさん
2022/02/04(金) 13:35:40.02ID:ovGR74Kw ありがとうございます ビルド通ったみたいです
781デフォルトの名無しさん
2022/02/04(金) 13:55:24.36ID:3M0ClPfa 最近のはptr_funやんなくても通んだな
782デフォルトの名無しさん
2022/02/05(土) 11:50:25.88ID:DOE5sh/+ template<yyy T>//yyyはコンセプト
requires !xxx<T>//xxxはコンセプト
void test(const T& a);//yyyのコンセプトを満たしxxxのコンセプトを満たさないものについて処理したい
C++20のコンセプトのrequires節って!使うと警告出るのでわざわざ否定用のコンセプト作成して対応してるんだけど、もっと簡単な仕組みない?
requires !xxx<T>//xxxはコンセプト
void test(const T& a);//yyyのコンセプトを満たしxxxのコンセプトを満たさないものについて処理したい
C++20のコンセプトのrequires節って!使うと警告出るのでわざわざ否定用のコンセプト作成して対応してるんだけど、もっと簡単な仕組みない?
783デフォルトの名無しさん
2022/02/05(土) 11:52:48.48ID:vpksE3yJ requires (!xxx<T>)
784デフォルトの名無しさん
2022/02/05(土) 12:04:00.17ID:DOE5sh/+ 解決した!ありがとう!
785デフォルトの名無しさん
2022/02/05(土) 20:23:31.04ID:Irrrknzv #define FOO() 1
#if FOO
...
#endif
と書いた場合FOOの後ろに()付けるの忘れてるのでコンパイルエラーになって欲しいんですが
実際はFOOは偽に評価されてるみたいです
何が起きてるんでしょうか?
#if FOO
...
#endif
と書いた場合FOOの後ろに()付けるの忘れてるのでコンパイルエラーになって欲しいんですが
実際はFOOは偽に評価されてるみたいです
何が起きてるんでしょうか?
786はちみつ餃子 ◆8X2XSCHEME
2022/02/05(土) 20:31:08.99ID:NEwj3nV7 >>785
#if の条件の部分ではマクロ展開できるものを全部展開したあとに知らない識別子が残ったら 0 と解釈する。
#if の条件の部分ではマクロ展開できるものを全部展開したあとに知らない識別子が残ったら 0 と解釈する。
787デフォルトの名無しさん
2022/02/05(土) 20:32:57.42ID:BHACckaU >>785
FOO に () が無いことで展開されず、マクロ展開後に残った識別子として 0 に置き換わってる。
https://timsong-cpp.github.io/cppwp/n4868/cpp.cond#11.sentence-1
> After all replacements ..., all remaining identifiers and keywords,
> except for true and false, are replaced with the pp-number 0, ...
FOO に () が無いことで展開されず、マクロ展開後に残った識別子として 0 に置き換わってる。
https://timsong-cpp.github.io/cppwp/n4868/cpp.cond#11.sentence-1
> After all replacements ..., all remaining identifiers and keywords,
> except for true and false, are replaced with the pp-number 0, ...
788デフォルトの名無しさん
2022/02/06(日) 01:29:50.60ID:Yc7Iwiyd >>785
バカですか?
バカですか?
789デフォルトの名無しさん
2022/02/06(日) 01:32:54.82ID:3BxbnhGH #if defined(FOO)
...
#endif
...
#endif
790デフォルトの名無しさん
2022/02/06(日) 01:34:05.59ID:Yc7Iwiyd Cの基本が出来てないくせにC++を使いこなせると思うなよ
791デフォルトの名無しさん
2022/02/06(日) 01:35:00.88ID:H2F64OwB 横からだけど知らなかった
792デフォルトの名無しさん
2022/02/06(日) 03:28:00.08ID:XnD7OQcd793デフォルトの名無しさん
2022/02/06(日) 06:46:34.29ID:qvD4QsX7 こういう馬鹿のためにコンパイラに無駄なルールが必要になるんだなと実感
794デフォルトの名無しさん
2022/02/06(日) 06:55:06.64ID:usxBX4wT エラーにならないのは理不尽だな
795デフォルトの名無しさん
2022/02/06(日) 08:23:12.41ID:qvD4QsX7 馬鹿のためにわざわざプリプロセスで構文解析エラーを要求するとか馬鹿の極み
796デフォルトの名無しさん
2022/02/06(日) 08:30:29.95ID:usxBX4wT FOOが0になる根拠を与えていないだろ
関連付けられていないものが出てくるのがおかしいと思わないとしたらPG適性低いぞ
関連付けられていないものが出てくるのがおかしいと思わないとしたらPG適性低いぞ
797デフォルトの名無しさん
2022/02/06(日) 08:53:46.75ID:2YxKeDPZ 唐突に0がどうとか言い出すのはセンス無いわ
798デフォルトの名無しさん
2022/02/06(日) 09:07:44.45ID:HE5J2RYG 初めて知った
799デフォルトの名無しさん
2022/02/06(日) 09:24:54.74ID:usxBX4wT800デフォルトの名無しさん
2022/02/06(日) 09:35:58.81ID:qvD4QsX7 馬鹿は当たり前のように英語も読めない
801デフォルトの名無しさん
2022/02/06(日) 09:36:22.76ID:vWDceL4H なんじゃそりゃ>>799はC++規格委員会が死ね言うたら死ぬんか、
802デフォルトの名無しさん
2022/02/06(日) 09:57:50.12ID:vWDceL4H 規格書にはなんでそうなっているのか(置換されずに残ったFOOをエラーではなく0にするのか)の理由が書かれていないが
#ifdef defined(FOO) && FOO
として現れる論理式「defined(FOO) && FOO」の解釈を簡単にやりたい(FOOが未定義の場合でも通常の式の解釈ルーチンで処理したい
的なしょーもない理由だったりして……
#ifdef defined(FOO) && FOO
として現れる論理式「defined(FOO) && FOO」の解釈を簡単にやりたい(FOOが未定義の場合でも通常の式の解釈ルーチンで処理したい
的なしょーもない理由だったりして……
803デフォルトの名無しさん
2022/02/06(日) 09:59:13.49ID:vWDceL4H まつがえたorz
×: #ifdef defined(FOO) && FOO
○: #if defined(FOO) && FOO
×: #ifdef defined(FOO) && FOO
○: #if defined(FOO) && FOO
804デフォルトの名無しさん
2022/02/06(日) 10:11:26.46ID:usxBX4wT805デフォルトの名無しさん
2022/02/06(日) 10:16:43.48ID:a0g451d/ 理由はたぶん、規格化以前に存在した実装の動作を規格違反とするのはマズいとか、
その動作に依存して #if FOO としてる既存ソースをエラーとするわけにはいかなかったとか、
そんなところだろうと思う。
マズい動作として検出したければ警告は出せるんだし。
その動作に依存して #if FOO としてる既存ソースをエラーとするわけにはいかなかったとか、
そんなところだろうと思う。
マズい動作として検出したければ警告は出せるんだし。
806デフォルトの名無しさん
2022/02/06(日) 11:57:03.48ID:qvD4QsX7 馬鹿がまだ騒いでるのかw
こういう変なコードとの対比w
$ g++ -x c++ - <<EOF
auto f = [](){return 2;};
#define f() 1
int main() {
auto i = f();
auto j = f;
return i + j();
}
EOF
$ ./a.out
$ echo $?
3
$
こういう変なコードとの対比w
$ g++ -x c++ - <<EOF
auto f = [](){return 2;};
#define f() 1
int main() {
auto i = f();
auto j = f;
return i + j();
}
EOF
$ ./a.out
$ echo $?
3
$
807はちみつ餃子 ◆8X2XSCHEME
2022/02/06(日) 12:12:45.00ID:u7K67HUJ 残った識別子を 0 に解釈する挙動は C89 からの仕様だから C89 の Rationale (根拠) を見たんだけど直接的な言及は見つからない。
https://docs.google.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BxVCLS4f8Sg5NWZmM2NjZWEtYmExMS00Y2EzLWE3ZTMtNzFmYjYwYzBiOTIw&hl=en_US
ただ、既存のコードに差し障りがないようにということは明記してある (3.8.3) ので、
その時点でそういう挙動が支配的 (かつそれに依存するコードが多かった) のだろうとは察せられる。
規格ってのは統一を図るってのが第一の目的だけど無理な仕様でまとめちゃうと誰もその規格に従わないだけなんで、
現実にそれでやっているってのも (たとえ不格好でも) 十分な理由になるんだよ。
https://docs.google.com/viewer?a=v&pid=explorer&chrome=true&srcid=0BxVCLS4f8Sg5NWZmM2NjZWEtYmExMS00Y2EzLWE3ZTMtNzFmYjYwYzBiOTIw&hl=en_US
ただ、既存のコードに差し障りがないようにということは明記してある (3.8.3) ので、
その時点でそういう挙動が支配的 (かつそれに依存するコードが多かった) のだろうとは察せられる。
規格ってのは統一を図るってのが第一の目的だけど無理な仕様でまとめちゃうと誰もその規格に従わないだけなんで、
現実にそれでやっているってのも (たとえ不格好でも) 十分な理由になるんだよ。
808デフォルトの名無しさん
2022/02/06(日) 12:26:28.98ID:qvD4QsX7 そう書かれるとC89っぽく書かないといかんのか?w
変更部分のみw
$ gcc -x c -std=c89 - <<EOF
int f(void){return 2;}
#define f() 1
int main(void) {
int i;
int (*j)();
i = f();
j = &f;
return i + (*j)();
}
EOF
変更部分のみw
$ gcc -x c -std=c89 - <<EOF
int f(void){return 2;}
#define f() 1
int main(void) {
int i;
int (*j)();
i = f();
j = &f;
return i + (*j)();
}
EOF
809デフォルトの名無しさん
2022/02/06(日) 12:53:10.29ID:FF40fIFl CとC++の規格は既存コードへの忖度の塊で出来てるからな
万人の敵だったgets()を削除するのにどんだけ苦労してるのやら
万人の敵だったgets()を削除するのにどんだけ苦労してるのやら
810デフォルトの名無しさん
2022/02/06(日) 13:16:26.39ID:vWDceL4H811デフォルトの名無しさん
2022/02/06(日) 13:22:45.35ID:vWDceL4H >>807
C++規格委員会は無罪なのかもしれんがじゃあなんでC89以前からそうで
そういう挙動が支配的になってしまう事態になってしまったのか、と考えると
やっぱプリプロセッサの最初の設計者がサボって
プリプロセッサ式の途中でのFOOの定義/未定義判定を
define(FOO)を導入する代わりに仕様の方を弄って簡単ハックしてしまったから
のでは……
C++規格委員会は無罪なのかもしれんがじゃあなんでC89以前からそうで
そういう挙動が支配的になってしまう事態になってしまったのか、と考えると
やっぱプリプロセッサの最初の設計者がサボって
プリプロセッサ式の途中でのFOOの定義/未定義判定を
define(FOO)を導入する代わりに仕様の方を弄って簡単ハックしてしまったから
のでは……
812デフォルトの名無しさん
2022/02/06(日) 13:33:49.71ID:qvD4QsX7 コードを示しても馬鹿には伝わらない悲しみw
813デフォルトの名無しさん
2022/02/06(日) 13:37:12.22ID:vWDceL4H >>812
天才にもわかるようにkwsk
天才にもわかるようにkwsk
814デフォルトの名無しさん
2022/02/06(日) 13:39:17.55ID:qvD4QsX7 天才は自力でなんとか出来るし、他人を信用しないことも多いから、基本的に質問とかする機会がない
アイデアレベルの話のみ
アイデアレベルの話のみ
815デフォルトの名無しさん
2022/02/06(日) 14:11:31.07ID:Yc7Iwiyd (σ゚ω゚)σゲッツ
stdioのバッファ使うヤツ殆ど失敗作
stdioのバッファ使うヤツ殆ど失敗作
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 【インバウンド】中国からの“渡航自粛”…ツアー1000人分の直前キャンセル「キャンセル料は免除してくれ」 ことしいっぱいキャンセルに [1ゲットロボ★]
- 「国民の憤りを引き起こした」中国側“高市首相発言の撤回改めて要求” [どどん★]
- 【芸能】日中関係悪化でエンタメ業界に大ダメージ… JO1の中国でのイベント中止、邦画は公開延期、STARTOアイドルへの影響も [冬月記者★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- 【J SPORTS】FIFA U-17ワールドカップ ★9
- とらせん IPあり
- 巨専】
- こいせん 全レス転載禁止
- 侍ジャパンシリーズ2025「日本vs韓国」その12
- 【ATP】テニス総合実況スレ2025 Part 211【WTA】
- 自民党議員「高市は先人が築き上げた日中関係を壊した。外務省が謝罪に言ってるが自分で責任を取れ」 [834922174]
- 米シンクタンク「アメリカは台湾問題で"あいまい戦略"を取っている。高市早苗はこの方針から逸脱している」 [603416639]
- 【高市早苗】バス会社、中国からのキャンセルで12月で2000万円~3000万円の損失へ [115996789]
- かしこいワンコっていうVtuberの子知ってる?
- カレーライスぐちゃぐちゃに混ぜる奴🤣
- にゃんこ大戦争やってるやついる?
