分派专用标签是否有效?以下代码可以编译并运行,没有任何错误。但是我仍然想确认这样做是否有效。
import re
_XHTML_ESCAPE_RE = re.compile('[&<>"\']')
_XHTML_ESCAPE_DICT = {'&': '&', '<': '<', '>': '>', '"': '"',
'\'': '''}
def xhtml_escape(value):
"""Escapes a string so it is valid within HTML or XML.
Escapes the characters ``<``, ``>``, ``"``, ``'``, and ``&``.
When used in attribute values the escaped strings must be enclosed
in quotes.
.. versionchanged:: 3.2
Added the single quote to the list of escaped characters.
"""
return _XHTML_ESCAPE_RE.sub(lambda match: _XHTML_ESCAPE_DICT[match.group(0)],
value)
还有,还有其他方法可以实现相同的目标吗?
答案 0 :(得分:2)
您的专业标签没有什么用。您以一种奇怪的方式使用SFINAE,只需执行以下操作即可:
template <typename T> struct tag{};
std::string real_func(tag<std::string>, int i) {
return to_string(i);
}
template <typename T, typename std::enable_if<std::is_arithmetic<T>::value, int>::type = 0>
T real_func(tag<T>, int i) {
return static_cast<T>(i);
}
template <typename T>
T func(int i) {
return real_func(tag<T>(), i);
}