※ ChatGPTを利用し、要約された質問です(原文:c++テンプレート関数名)
C++のテンプレート関数名に関する疑問
このQ&Aのポイント
C++のテンプレート関数名に関するエラーが発生しています
オーバーロード関数の呼び出しがあいまいですというエラーが表示され、コンパイルできません
直前に作成したプログラムの影響や別の規則が原因なのか疑問です
#include <iostream>
#include <string>
using namespace std;
template <class T>
T maxdt std(T a,T b){
if (a>b) return a;else return b;
}
int main (){
int id1,id2,n1 = 1000,n2 = 2000;
double ddt;
string sdt,s1 = "abcd",s2 = "jklm";
id1 = maxdt(n1,n2);
id2 = maxdt(3000,4000);
ddt =maxdt (55.55,66.66);
sdt = maxdt(s1,s2);
cout << "id1" << id1 <<endl;
cout << "id2" << id2 <<endl;
cout << "ddt" << ddt <<endl;
cout << "sdt" << sdt <<endl;
return 0;
}
というプログラムが例題であり、僕は横着をしてmaxdtをmaxという名前としてプログラムを作ったところ、
オーバーロード関数の呼び出しがあいまいです。
というエラーが表示されコンパイルできませんでした。
環境はubuntu 12.04,gcc 4.6.3 g++でコンパイルしました。
ググってもテンプレート関数の名前の付け方に規則は存在していないようなのですが、
これは直前に作ったプログラムの影響でしょうか?(maxという関数を作っていたので)
それとも別の規則が存在したりするのでしょうか?
お礼
ありがとうございます。 maxって使ったらいけない名前なんですね。 正直関数のライブラリとかはまだ理解できないので、安全策で行きます。