我已經瞭解到,除非朋友聲明是定義,否則C++ 11標準不允許朋友函數具有默認參數。因此,這是不允許的:爲什麼不能聲明的朋友函數具有默認參數?
class bar
{
friend int foo(int seed = 0);
};
inline int foo(int seed) { return seed; }
但這是:
class bar
{
friend int foo(int seed = 0)
{
return seed;
}
};
(例禮貌http://clang-developers.42468.n3.nabble.com/Clang-compile-error-td4033809.html)
這是什麼決定背後的理性?具有默認參數的朋友函數是有用的,例如如果這個功能太複雜以至於無法申報,爲什麼他們現在不被允許?