重複の可能性:
decltypeと括弧
int i=6;
decltype((i)) var5 = i; // int&
括弧内にある「i」が左辺値と見なされる理由がわかりませんでした。MSDNで「内側の括弧によってステートメントが式ではなく式として評価されることがわかるまで、括弧の適用を知っていました。メンバーアクセス(http://msdn.microsoft.com/en-us/library/dd537655.aspx)、そして私も長い間理解していなかった質問を理解していませんでした。
template<typename T>
class B
{
public:
B(T t){printf("B\n");}
};
template <typename T >
void ft(T t)
{
t.f();
}
int _tmain(int argc, _TCHAR* argv[])
{
B<A> b1(A()); //one function declaration, A() is regarded as fun-ptr, and b1 is a function
B<A> b2((A())); //A() is regarded as anonymous object.
return 0;
}
A()
かっこで囲んだときに匿名オブジェクトと見なされるのはなぜですか(A())
。MSDNのdecltypeに関する内括弧の説明は、この状況には適用できません。C ++標準のこの2つの状況で、括弧関数についての拡張があることを誰かに教えてもらえますか。どうすればこれをよりよく理解できますか、とても感謝しています!