以下规则的原因是:“用户定义的转换函数模板不能具有推论的返回类型。”
<h6>ONE</h6>
<label><input type="checkbox" name="service[]" value='a' data-value="10"> a 10$</label>
<label><input type="checkbox" name="service[]" value='b' data-value="15"> b 15$</label>
<label><input type="checkbox" name="service[]" value='c' data-value="8"> c 8$</label>
<h6>TWO</h6>
<label><input type="checkbox" name="service[]" value='d' data-value="120"> d 120$</label>
<label><input type="checkbox" name="service[]" value='e' data-value="100"> e 100$</label>
<label><input type="checkbox" name="service[]" value='f' data-value="7"> f 7$</label>
<label><input type="checkbox" name="service[]" value='g' data-value="4"> g 4$</label>
<label><input type="checkbox" name="service[]" value='h' data-value="2"> h 2$</label>
<label><input type="checkbox" name="service[]" value='i' data-value="64"> i 64$</label>
<label><input type="checkbox" name="service[]" value='j' data-value="33"> j 33$</label>
<h6>TOTAL:</h6>
<span id="total"></span>
<script src="//code.jquery.com/jquery-3.4.1.min.js"></script>
答案 0 :(得分:11)
即使被允许,在第二行中,也没有任何内容取决于模板。
无法调用(在这种情况下,T
的目的是什么?)
如果要转换为用户定义的类型,则可以这样做: 假设您有:
struct S
{
template<typename T> operator T() { return T(42); }
};
很明显,没有必要推论任何东西。 您可以这样称呼:
S s;
int v = s;
float f = s;
请注意,在这种情况下,在上面的代码中使用auto
而不是float
会阻止编译器推断类型(是float
还是{{1 }}和int
吗?)。上面的句子简单地解释了这一点。