所以我试图限制对转换操作符为bool的类型的操作 - 例如:
template <typename R>
Result
operator&&(const R&) {
STATIC_ASSERT(false, MY_MESSAGE);
return Result();
}
STATIC_ASSERT
是围绕c ++ 11 static_assert
的一个包装器宏,以及一个宏 - 是c ++ 98静态断言。
我想要一个有用的消息作为错误,尝试使用它的用户将其设置为私有或在c ++ 11中删除它不是一个选项。
然而,这仅适用于MSVC,因为msvc和g ++ / clang之间存在差异 - 使用g ++ / clang时,静态断言始终会触发 - 即使未使用“已删除”函数也是如此。
我唯一能看到的就是使用一个未定义的类型,它的名称作为模板的返回类型的消息 - 就像这样:
template<typename R>
STATIC_ASSERT_Expression_Too_Complex_Please_Rewrite_As_Binary_Comparison&
operator&&(const R&);
我第一次看到这个here
在c ++ 98中是否还有其他方法可以执行此操作 - 当用户尝试使用自定义消息时,这是一个已删除的函数?
答案 0 :(得分:1)
,<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="form-group radior">
<fieldset>
<legend aria-hidden="true">Legend1</legend>
<div class="col-md-4">
<div class="mainlabel" for="test1">Legend1</div>
</div>
<div class="col-md-8 required">
<label for="Option 1a">
<input required="" type="radio" tabindex="-1">
<span class="newone">
<div class="moveme">Option 1a</div>
</span>
</label>
<label for="Option 1b">
<input required="" type="radio" tabindex="-1">
<span class="newone">
<div class="moveme">Option 1b</div>
</span>
</label>
<label for="Option 1c">
<input required="" type="radio" tabindex="-1">
<span class="newone">
<div class="moveme">Option 1c</div>
</span>
</label>
</div>
</fieldset>
</div>
<div class="form-group radior">
<fieldset>
<legend aria-hidden="true">Legend2</legend>
<div class="col-md-4">
<div class="mainlabel" for="test2">Legend2</div>
</div>
<div class="col-md-8 required">
<label for="Option 2a">
<input required="" type="radio" tabindex="-1">
<span class="newone">
<div class="moveme">Option 1c</div>
</span>
</label>
<label for="Option 2b">
<input required="" type="radio" tabindex="-1">
<span class="newone">
<div class="moveme">Option 1c</div>
</span>
</label>
</div>
</fieldset>
</div>
不依赖于模板。
您必须根据模板制定条件。
为static_assert(false, message)