struct Zero{};
template<typename T>
Zero operator*(const Zero& zero, const T& other){return Zero();}
struct Identity{};
template<typename T>
T operator*(const T& other, const Identity& id){return T();}
現在,我想用這個代碼:
Zero z;
Identity id;
int i = 5;
z * i; // ok
i * id; // ok
z * id; //error: ambiguity in function resolution
編譯器將不能夠解決最後一行中的操作符,因爲可以使用這兩個函數。事實上,在這種情況下,我不關心使用哪個函數,因爲它們具有相同的功能。在這兩種情況下,Zero()將按預期返回。
我的問題:我如何表達,在這種情況下,任何功能都可以使用?
BTW:您可能想看看'constexpr'。 – Deduplicator 2014-12-07 21:46:16