2015-10-04 43 views
0

我正在考慮重載std :: shared_ptr的相等和排序運算符以用於特定類型。所以,如果我有以下內容std :: shared_ptr上的重載運算符==

struct Foo { /* Stuff */ }; 

bool operator==(const std::shared_ptr<Foo>& lhs, const std::shared_ptr<Foo>& rhs) 
{ 
    // Do something reasonable for equality using the Foo instances 
} 

所以這將意味着平等將不再是指針平等。這樣做有缺點或者一些醜陋的陷阱嗎?

回答

0

這是完全非法的,並被Standard禁止。可怕的鼻子惡魔隨之而來。

+3

看起來很可能這確實是無效的,但是標準中的一句話或者是一個真正實現的中斷可能會更有說服力。 – hvd

+1

我同意hvd我希望有更多的啓發點。它似乎是有效的C++,所以它是非法的? – goneskiing