Чтение функционального программирования на с ++ Иваном Чукичем, видя это ближе к концу раздела 9.1.4.
Откуда этот синтаксис "Вариант шаблона" и "Ожидаемый шаблон"?
template <typename T, template Variant,
template Expected = expected<T, std::string>>
Expected get_if(const Variant& variant)
{
T* ptr = std::get_if<T>(variant);
if (ptr) {
return Expected::success(*ptr);
} else {
return Expected::error("Variant doesn't contain the desired type");
}
}
Это правильный синтаксис C ++?Это не похоже на параметр шаблона шаблона.
Попробовать небольшой образец игрушки на Годболте у меня не получится.
template <typename T, template Variant, template E = std::map<T, std::string>>
int f(const Variant& v) {
return std::get<0>(v);
}
int main() {
std::variant<int> v{0};
return f(v);
}