代码之家  ›  专栏  ›  技术社区  ›  Jonathan Mee

只传递第二个模板参数的方法

  •  3
  • Jonathan Mee  · 技术社区  · 6 年前

    所以我有一个默认值为2的模板函数 nd公司 争论。是1 可以推断出论点,所以类似于:

    template <typename F, typename S = int>
    void foo(const F param)
    

    一般情况下都可以,我打电话给你 foo(bar) . 但在我想指定第二个参数的情况下,我不能这样做: foo<char>(bar) ,因为 char 被视为 F . 显然情况并非如此,因为 bar 不是一个 烧焦 ,所以 F 应该是可以推断的。

    有没有一种方法可以在这里只传递一个模板参数来应用于 S F 被推断,仍然违约 S 一般情况下?

    1 回复  |  直到 6 年前
        1
  •  15
  •   Jarod42    6 年前

    只需重新排列模板参数:

    template <typename S = int, typename F>
    void foo(const F param);
    

    模板可以在任何地方默认。最后,需要提供、默认或推导所有模板参数。