#include <string>
struct XmlType {};
XmlType XmlType_(const XmlType&, const std::string&) { return XmlType{}; }
std::string XmlType_(const XmlType&) { return ""; }
template<typename T>
using TFunc1 = T (*)(const T&, const std::string&);
template<typename T>
using TFunc2 = std::string (*)(const T&);
template<typename T, TFunc1<T> func1 = XmlType_, TFunc2<T> func2 = XmlType_>
struct XmlUtil {};
int main()
{
XmlUtil<XmlType> util;
}
I2luY2x1ZGUgPHN0cmluZz4KIApzdHJ1Y3QgWG1sVHlwZSB7fTsKIApYbWxUeXBlIFhtbFR5cGVfKGNvbnN0IFhtbFR5cGUmLCBjb25zdCBzdGQ6OnN0cmluZyYpIHsgcmV0dXJuIFhtbFR5cGV7fTsgfQpzdGQ6OnN0cmluZyBYbWxUeXBlXyhjb25zdCBYbWxUeXBlJikgeyByZXR1cm4gIiI7IH0KIAp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgp1c2luZyBURnVuYzEgPSBUICgqKShjb25zdCBUJiwgY29uc3Qgc3RkOjpzdHJpbmcmKTsKdGVtcGxhdGU8dHlwZW5hbWUgVD4KdXNpbmcgVEZ1bmMyID0gc3RkOjpzdHJpbmcgKCopKGNvbnN0IFQmKTsKIAp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBURnVuYzE8VD4gZnVuYzEgPSBYbWxUeXBlXywgVEZ1bmMyPFQ+IGZ1bmMyID0gWG1sVHlwZV8+CnN0cnVjdCBYbWxVdGlsIHt9OwogCmludCBtYWluKCkKewogICAgWG1sVXRpbDxYbWxUeXBlPiB1dGlsOyAKfQ==