有没有办法生成代码(在编译时),看起来有点像:
T Func(T t){
if (sizeof(t) == 2){
return X(t);
}
else if( sizeof(t) == 4){
return Y(t);
}
}
(其中T是int32或int16)
所以在运行时我可以打电话:
Func(_myInt)
代码只会编译为X(_myInt)
或Y(_myInt)
。
答案 0 :(得分:7)
是
X Func(int32_t t) {
return X(t);
}
Y Func(int16_t t) {
return Y(t);
}
答案 1 :(得分:4)
通过标签调度:
template <typename T>
auto Func_impl(T t, std::integral_constant<std::size_t, 2>){
return X(t);
}
template <typename T>
auto Func_impl(T t, std::integral_constant<std::size_t, 4>){
return Y(t);
}
template <typename T>
auto Func(T t){
return Func_impl(T, std::integral_constant<std::size_t, sizeof(T)>{});
}
答案 2 :(得分:0)
为了完整性,如果你只想在绝对大小上发送,还有enable_if:
<?php
$sql = (" SELECT * FROM result ");
$query = mysqli_query($db, $sql);
while ($row = mysqli_fetch_array($query)) {
$row2 = $row['id']; // I added an = sign here.
for($i=1;$i<=10;$i++) {
if ($i<= $row2) {
echo "<font color='red'><font size='50px'>".$i."</font></font>"."<br>";
continue;
} else {
echo $i.'<br>';
}
}
}