Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ “不可推断”一词的正式定义是什么`_C++_Templates_Language Lawyer_C++20 - Fatal编程技术网

C++ “不可推断”一词的正式定义是什么`

C++ “不可推断”一词的正式定义是什么`,c++,templates,language-lawyer,c++20,C++,Templates,Language Lawyer,C++20,模板id在以下情况下有效: 参数的数量最多与参数的数量相同,或者参数是模板参数包[temp.Variatic], 每个不可推断的非打包参数都有一个参数,该参数没有默认的模板参数, 每个模板参数都与相应的模板参数[temp.arg]匹配, 将每个模板参数替换为以下模板参数(如果成功),以及 如果模板id是非依赖的,则满足下一段中指定的相关约束。 一个简单的模板id应该是有效的,除非它命名了一个函数模板专门化[temp.Decrete] 样板 结构测试{}; int main{ 使用类型=试验; }

模板id在以下情况下有效:

参数的数量最多与参数的数量相同,或者参数是模板参数包[temp.Variatic], 每个不可推断的非打包参数都有一个参数,该参数没有默认的模板参数, 每个模板参数都与相应的模板参数[temp.arg]匹配, 将每个模板参数替换为以下模板参数(如果成功),以及 如果模板id是非依赖的,则满足下一段中指定的相关约束。 一个简单的模板id应该是有效的,除非它命名了一个函数模板专门化[temp.Decrete]

样板 结构测试{}; int main{ 使用类型=试验; } 考虑上面的代码,在这种情况下,第二个模板参数U是否不可推断?标准中似乎没有正式的术语来解释什么是不可推断的。对于非演绎语境只有一个定义,但我认为它们不是一回事。那么,我如何理解“不可推断”一词呢?使用这种没有正式定义的措辞是否不清楚

问题 测试是无效的模板id,它在上面的列表中违反了哪个项目符号

什么是不可推断的

不参与模板参数推导的模板参数是否可以称为不可推导


这只是英语。可推断的意思是可以推断的。C++有一个如果一个参数是可推断的,那么它就是一个参数,对于这个参数,这个推断过程是成功的,因此能够被推断出来

不可推断简单地说就是不可推断。因此无法推断。因此,这个模板参数推导过程失败了


因此,它意味着每个非包装参数都有一个参数,其参数不能通过模板推导过程推导出来。关于这一点没有什么不清楚的。

这只是英语。可推断的意思是可以推断的。C++有一个如果一个参数是可推断的,那么它就是一个参数,对于这个参数,这个推断过程是成功的,因此能够被推断出来

不可推断简单地说就是不可推断。因此无法推断。因此,这个模板参数推导过程失败了


因此,它意味着每个非包装参数都有一个参数,其参数不能通过模板推导过程推导出来。关于这一点没有什么不清楚的。

你的报价来自哪里?我找不到it@NathanOliver@NathanOliver修改了这个问题。英语中可推断的定义是可以推导出来的。前缀non-`表示否定/相反。因此,不可推断意味着无法推断。“推断”一词是一个动词,其含义是从假定或已知的事物中得出结论,或追溯其起源。在引用的上下文中,最简单的意思是“无法派生”。@Peter你的意思是“不可演绎”包括未派生的上下文和无法派生的内容,对吗?在我的例子中,U是一个不可推断的模板参数?你的报价来自哪里?我找不到it@NathanOliver@NathanOliver修改了这个问题。英语中可推断的定义是可以推导出来的。前缀non-`表示否定/相反。因此,不可推断意味着无法推断。“推断”一词是一个动词,其含义是从假定或已知的事物中得出结论,或追溯其起源。在引用的上下文中,最简单的意思是“无法派生”。@Peter你的意思是“不可演绎”包括未派生的上下文和无法派生的内容,对吗?在我的例子中,U是一个不可推断的模板参数?模板参数推断是对这些参与模板参数推断的模板参数执行的。模板参数U不参与该过程。那么它是不可推断的吗?这里的关键点是,测试不需要执行模板参数推断。这只是为模板显式指定模板参数的一种情况。即使对这样的模板id执行模板参数推断,但是第二个模板参数U不参与这样的过程。在大多数情况下,用于组合P的类型、模板和非类型值参与模板参数推导。简言之,您认为不参与模板参数演绎的模板参数可以称为不可演绎吗?@jackX这是答案中写的。@Oliv看来主类模板的所有模板参数都是不可演绎的,可以推断的是出现在函数模板中的这些类型,或将被重新写入类部分专用化的函数模板模板模板参数的那些类型。模板参数推断是为这些参与模板参数执行的
板参数推导。模板参数U不参与该过程。那么它是不可推断的吗?这里的关键点是,测试不需要执行模板参数推断。这只是为模板显式指定模板参数的一种情况。即使对这样的模板id执行模板参数推断,但是第二个模板参数U不参与这样的过程。在大多数情况下,用于组合P的类型、模板和非类型值参与模板参数推导。简言之,您认为不参与模板参数演绎的模板参数可以称为不可演绎吗?@jackX这是答案中写的。@Oliv看来主类模板的所有模板参数都是不可演绎的,可以推断的是出现在函数模板中的这些类型,或者将被重新写入类部分专门化的函数模板模板参数的那些类型。