所以我試圖在具有轉換操作符爲bool類型限制操作 - 例如:用的時候都使用編譯時消息刪除功能
template <typename R>
Result
operator&&(const R&) {
STATIC_ASSERT(false, MY_MESSAGE);
return Result();
}
STATIC_ASSERT
約爲Ç我的包裝的宏++ 11 static_assert
和一個宏 - ish C++ 98靜態斷言。
我想要一個有點有用的消息作爲錯誤的用戶嘗試使用這個,使其私人或在C + + 11刪除它不是一個選項。
但是,由於msvc和g ++/clang之間的差異,只適用於MSVC - 即使未使用「已刪除」函數,g ++/clang靜態斷言也會始終激活。
我見過的唯一的東西,會做的伎倆是用它的名字作爲消息爲模板的返回類型使用一個未定義的類型 - 這樣的:
template<typename R>
STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison&
operator&&(const R&);
我第一次看到這個here
是否有任何其他方式來做到這一點在c + + 98中 - 用戶嘗試使用它時自定義消息的刪除函數?
@HansPassant謝謝。 (這是關於[>這個<](http://stackoverflow.com/questions/39479163)問題) – onqtam