cpp
1#include <bits/stdc++.h> 2using namespace std; 3using pb = pair<long double,long double>; 4bool cmp(const pb i,const pb j){ 5 long double a = i.first - i.second; 6 long double b = j.first - j.second; 7 return a<b; 8}; 9int main(){ 10 int N;cin>>N; 11 vector<pair<long double,long double>> P(N); 12 for(int i=0;i<N;i++)cin>>P[i].first>>P[i].second; 13 sort(begin(P),end(P),cmp); 14} 15
上記のような関数を定義し、GCCのg++12にてコンパイルを行ったところ以下のようなnoteが表示されました。
main.cpp: In function 'bool cmp(pb, pb)': main.cpp:4:6: note: parameter passing for argument of type 'std::pair<long double, long double>' when C++17 is enabled changed to match C++14 in GCC 10.1 4 | bool cmp(const pb i,const pb j){ | ^~~
実行環境
Mac book M1 2020
コンパイルオプション
g++-12 -std=c++17 -I . -O2
AppleClangで同様のコードを実行した際は同じはnoteが出ませんでした。
また、-std=c++17のところを-std=c++11にしたところnoteが出ませんでした。
翻訳をしてみたのですが意味がよくわかりません。
どなたか詳しい方よろしくお願いします。
test.cpp の24行目はどういうコードでしょうか。
できれば、その note を再現できる完全なコードを開示してください。

再現できるコードを追加しました。
よろしくお願いします。

いつまで有効かは分かりませんが、再現しないですね。
https://godbolt.org/z/YeEW3GP5e
本当にgcc12ですか?

はい。バージョンを確認したところ、gcc version 12.2.0 (Homebrew GCC 12.2.0) となってました。
PCはMac book M1 2020です。

コンパイルオプションなど実行方法を明記してください。PCではなくMacなんですね。
完全な再現環境はありませんが、C++コンパイルレベルでプラットフォームはあまり関係ないと思います。

コンパイルオプションについて書き忘れていて申し訳ないです。
g++-12 -std=c++17 -I . -O2
というオプションでコンパイルしてました。

質問文を変更してください。リンクオプションは省略しましたが、再現しませんね。
https://godbolt.org/z/1GYe95WvW
インストールを疑った方がいいです。

わかりました。


あなたの回答
tips
プレビュー