type-deduction相关内容

我们什么时候可以省略 C++11 lambda 中的返回类型?

据我知道,在标准 C++11 (not C++14),当省略 lambda 的返回类型时,其返回类型被推导出为: 返回表达式的类型,只要 lambda 只包含一个带有表达式的 return 语句,或者 void 在所有其他情况下. 现在考虑这个代码: #include 自动关闭 = [](int x){x++;返回 x;};int main(){int y = 闭包(10);std ..
发布时间:2021-12-23 22:08:59 C/C++开发

强类型定义

有没有办法制作一个类型的完整副本,以便在模板推导上下文中区分它们?举个例子: #include 模板 结构测试{静态 int c(){静态整数 t = 0;返回 t++;}};typedef int 句柄;int main(){std::cout ::c() ..
发布时间:2021-12-13 19:04:58 C/C++开发

“decltype(auto)"变量是否有任何实际用例?

从我的个人经验和咨询诸如 有哪些用途的问题的答案decltype(auto)?我可以找到许多将 decltype(auto) 作为函数返回类型占位符的有价值的用例. 然而,我很难为 decltype(auto) 变量想到任何有效的(即有用的、现实的、有价值的)用例.想到的唯一可能性是存储返回 decltype(auto) 的函数的结果以供以后传播,但 auto&& 也可以在那里使用,并且会更 ..
发布时间:2021-11-30 18:21:51 C/C++开发

为什么 auto i = same_const_variable 不能推导出“const"?

const int ci = 10;汽车 i = ci;//我将是“int"而不是“const int"我 = 20; 我想知道为什么 auto 是为这种行为而设计的? 为什么类型 i 是“int"而不是“const int"? 这里有什么问题? 我认为理解为什么会帮助我们记住它 解决方案 auto 大多遵循与模板参数推导相同的类型推导规则.唯一的区别是在某些情况下,a ..
发布时间:2021-11-30 18:19:04 C/C++开发

为什么 auto x{3} 会推导出一个 initializer_list?

我喜欢 C++11 中的 auto.太棒了.但它有一个不一致的地方让我很紧张,因为我总是被它绊倒: int i = 3;//i 是一个值为 3 的 intint i = int{3};//i 是一个值为 3 的 int国际我(3);//i 是一个值为 3 的 int(可能缩小,不是在这种情况下)int i{3};//i 是一个值为 3 的 int自动 i = 3;//i 是一个值为 3 的 in ..
发布时间:2021-11-30 18:10:03 C/C++开发

使用模板类和智能指针中的常量限定进行模板推导

假设我有一个模板化的类,以及一个函数,它在一个指向 const 的共享指针中接受它,使用它的模板参数作为其签名的一部分: template class SomeClass {};//不需要修改 SomeClass 对象.模板T DoSomething(std::shared_ptr>); 在这种情况下,我可以通过显式指定模板参数,使用指向非成本 SomeClass 的共享指针调用 DoSome ..
发布时间:2021-07-23 19:45:58 C/C++开发

Haskell中自动函数约束推论的类型约束

出于教育目的,我在Haskell的树木旁玩耍.我有这样定义的 Tree a 类型 数据树a =空树|节点a(树a)(树a) 和许多具有基本约束的函数- Ord a -因此它们具有类似 的类型 treeInsert :: Ord a =>a->树a->树atreeMake :: Ord a =>[a]->树a ,依此类推.我也可以像这样定义 Tree a data Ord a = ..
发布时间:2021-05-13 20:38:14 其他开发

函数声明符(有时/总是?)是函数声明符吗?

(此问题已从对此答案的讨论中分解出来,其中突出显示 CWG 1892 ) 该标准的某些段落将特定规则应用于功能声明符;例如 [dcl.spec.auto]/3 关于占位符类型[强调我的]: 占位符类型可以与函数声明符一起出现在 decl-specifier-seq , type-specifier-seq ,中在此类声明符有效的任何情况下,conversion-function-id ..
发布时间:2021-04-12 20:11:00 C/C++开发

C ++ 11/14和return(...)vs return

在 C ++ 中,您可以编写如下的 return语句: return ( ... ); 与流行的不同: return ... ; 特别是,第一个版本返回包含该return语句的函数堆栈本地内容的地址/引用. 现在为什么有些人想返回对当时没有生命期的东西的引用? 该习语的用例是什么?考虑到C ++ 11和C ++ 14中新的流行词和功能,对此有不同的用法吗? 解 ..
发布时间:2020-07-12 05:00:25 C/C++开发