gpt4 book ai didi

c++ - `non-deducible`的正式定义是什么

转载 作者:行者123 更新时间:2023-12-02 09:48:15 25 4
gpt4 key购买 nike

temp.names#6

A template-id is valid if

  • there are at most as many arguments as there are parameters or a parameter is a template parameter pack ([temp.variadic]),
  • there is an argument for each non-deducible non-pack parameter that does not have a default template-argument,
  • each template-argument matches the corresponding template-parameter ([temp.arg]),
  • substitution of each template argument into the following template parameters (if any) succeeds, and
  • if the template-id is non-dependent, the associated constraints are satisfied as specified in the next paragraph.


A simple-template-id shall be valid unless it names a function template specialization ([temp.deduct]).


template<typename T, typename U>
struct Test{};
int main(){
using type = Test<int>;
}
考虑以上代码,在这种情况下,第二个模板参数 U non-deducible是吗?在标准中似乎没有正式的术语来解释什么是 non-deduciblenon-deduced context仅有一个定义,但是我认为它们不一样。那么我如何理解 non-deducible的用语呢?使用这样的措词(尚无正式定义)还不清楚吗?

  • Test<int>是无效的模板ID,在上面的列表中它违反了哪个项目符号?
  • non-deducible是指什么?
  • 不参与模板参数推导的模板参数是否可以称为non-deducible
  • 最佳答案

    这只是英文。 “可推论”是指“可以推论”。 C++有一个well-defined process for deducing template arguments。如果一个论点是“可推论的”,那么它是一个推论过程成功的论据,因此是“可以推论的”。
    “不可推论”简单地表示“不可推论”。因此“无法推论”。因此,此模板参数推导过程失败。
    因此,这就是说“每个非压缩参数都有一个参数,其参数不能通过模板推导过程推导”。没有什么不清楚的。

    关于c++ - `non-deducible`的正式定义是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63045748/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com