模板关键字作为模板参数

时间:2019-02-14 01:08:34

标签: c++ c++11

IvanČukić阅读c ++的函数式编程后,将在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参数。

尝试使用Godbolt上的小玩具样本对我不起作用。

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);
}

1 个答案:

答案 0 :(得分:1)

这是本书中的错字。将这两种“模板”外观替换为“类型名”。

这是勘误表的链接。 https://forums.manning.com/posts/list/45184.page