C++相談室 part85
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/10/09(土) 20:22:35ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。
前スレ
C++相談室 part84
http://hibari.2ch.net/test/read.cgi/tech/1284736187/
0666デフォルトの名無しさん
2010/10/29(金) 22:10:13struct Foo
{
template<typename T>
Foo& operator<<(const T& rhs)
{
std::cout << rhs;
return *this;
}
} foo;
int main()
{
foo << 1 << "test";
foo << std::endl; // error: no match for ‘operator<<’ in ‘foo << std::endl’
return 0;
}
これ、何でですか?
0667デフォルトの名無しさん
2010/10/29(金) 22:23:03endl のテンプレート実引数が不明
0668デフォルトの名無しさん
2010/10/29(金) 22:31:18だからTが曖昧になっちゃう
0669デフォルトの名無しさん
2010/10/29(金) 22:41:34http://codepad.org/KH5rpOc8
0670デフォルトの名無しさん
2010/10/29(金) 22:52:39ありがとうございます。
試しにdecltype(std::endl)とかやってみるとやっぱりerror: ‘std::endl’ refers to a set of overloaded functionsと怒られますね。
>>669
> std::ostream& (*ENDL)(std::ostream& os)
std::ostream& (&ENDL)(std::ostream& os)
でもよいですよね?(実際に試してみてコンパイルエラーは出てないのですが)
インライン化されるか気になって関数のポインタ取るのに抵抗ありまして。
(実際はその程度は関係ないですか?)
■ このスレッドは過去ログ倉庫に格納されています