我正在尝试重载operator *来处理用不同类型实例化的类模板,但是我得到了一个"太多的模板参数列表"来自编译器。这是我的功能实现:
template <typename T>
template <typename E>
inline Vec2<T> operator*(Vec2<T> lhs, Vec2<E>& rhs)
{
lhs *= rhs;
return lhs;
}
template <typename T>
template <typename E>
inline Vec2<T> operator*(Vec2<T> lhs, E scalar)
{
lhs.x *= scalar;
lhs.y *= scalar;
return lhs;
}
以下是我用它的用例:
Vec2<float> scale(0.5, 0.8);
Vec2<short> value(50, 100);
Vec2<short> result = value * scale;
// value should now equal (25, 80)
答案 0 :(得分:1)
嗯,您使用的语法不正确。
template <typename T, typename E> Vec2<T> operator*(Vec2<T> lhs, Vec2<E>& rhs)
仅在定义模板类的模板成员时使用,而不是您的情况。在您的情况下,您应该只使用
function add_nofollow_acf($field) {
$field = preg_replace_callback(
'/<a[^>]*href=["|\']([^"|\']*)["|\'][^>]*>([^<]*)<\/a>/i',
function($m) {
if (strpos($m[1], "md7.info") === false)
return '<a href="'.$m[1].'" rel="nofollow noopener noreferrer" target="_blank">'.$m[2].'</a>';
else
return '<a href="'.$m[1].'" target="_blank">'.$m[2].'</a>';
},
$field);
return $field;
}
add_filter('acf/load_value', 'add_nofollow_acf');