1
是否有可能以這樣的方式強制功能被稱爲賦值操作數只
auto i = foo.GetLock();
作品來聲明函數,但
foo.GetLock();
導致編譯錯誤?
我的界面有一個方法返回RIIA風格的鎖對象,我想確保沒有人決定調用GetLock()來鎖定鎖。
它曾經是這樣的
class CSomethingOrElse : private CLockable
{
...
} foo;
CLocker<CSomethingOrElse> lock(foo);
但它是我的口味太冗長,我真的想利用auto
。
如果getLock返回一個在破壞時解鎖的類:它不會阻止非賦值調用,但它會阻止鎖定 – galinette 2015-04-06 13:00:23
clang和gcc對此有一個警告(使用函數的返回值)。 (請參閱http://stackoverflow.com/questions/2870529/g-how-to-get-warning-on-ignoring-function-return-value) – Jarod42 2015-04-06 13:01:37
@ Jarod42:但在這種情況下,您通常會發出大量警告,沒有?很多函數使用可選的返回值(例如流操作符等) – galinette 2015-04-06 13:03:42