type-deduction相关内容
据我知道,在标准 C++11 (not C++14),当省略 lambda 的返回类型时,其返回类型被推导出为: 返回表达式的类型,只要 lambda 只包含一个带有表达式的 return 语句,或者 void 在所有其他情况下. 现在考虑这个代码: #include 自动关闭 = [](int x){x++;返回 x;};int main(){int y = 闭包(10);std
..
有没有办法制作一个类型的完整副本,以便在模板推导上下文中区分它们?举个例子: #include 模板 结构测试{静态 int c(){静态整数 t = 0;返回 t++;}};typedef int 句柄;int main(){std::cout ::c()
..
从我的个人经验和咨询诸如 有哪些用途的问题的答案decltype(auto)?我可以找到许多将 decltype(auto) 作为函数返回类型占位符的有价值的用例. 然而,我很难为 decltype(auto) 变量想到任何有效的(即有用的、现实的、有价值的)用例.想到的唯一可能性是存储返回 decltype(auto) 的函数的结果以供以后传播,但 auto&& 也可以在那里使用,并且会更
..
在下面的代码片段中,auto 将变量推导出为 double,但我想要 float. auto one = 3.5; 它是否总是使用 double 来表示带有小数点的文字?它如何在 float 和 double 之间做出决定? 解决方案 文字类型 3.5 是 double.对于 float 请使用 3.5f 您可以使用此代码段查看各种类型信息.
..
const int ci = 10;汽车 i = ci;//我将是“int"而不是“const int"我 = 20; 我想知道为什么 auto 是为这种行为而设计的? 为什么类型 i 是“int"而不是“const int"? 这里有什么问题? 我认为理解为什么会帮助我们记住它 解决方案 auto 大多遵循与模板参数推导相同的类型推导规则.唯一的区别是在某些情况下,a
..
我喜欢 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
..
假设我有一个模板化的类,以及一个函数,它在一个指向 const 的共享指针中接受它,使用它的模板参数作为其签名的一部分: template class SomeClass {};//不需要修改 SomeClass 对象.模板T DoSomething(std::shared_ptr>); 在这种情况下,我可以通过显式指定模板参数,使用指向非成本 SomeClass 的共享指针调用 DoSome
..
出于教育目的,我在Haskell的树木旁玩耍.我有这样定义的 Tree a 类型 数据树a =空树|节点a(树a)(树a) 和许多具有基本约束的函数- Ord a -因此它们具有类似 的类型 treeInsert :: Ord a =>a->树a->树atreeMake :: Ord a =>[a]->树a ,依此类推.我也可以像这样定义 Tree a data Ord a =
..
我正在使用
..
(此问题已从对此答案的讨论中分解出来,其中突出显示 CWG 1892 ) 该标准的某些段落将特定规则应用于功能声明符;例如 [dcl.spec.auto]/3 关于占位符类型[强调我的]: 占位符类型可以与函数声明符一起出现在 decl-specifier-seq , type-specifier-seq ,中在此类声明符有效的任何情况下,conversion-function-id
..
在下面的代码片段中, auto 将变量推导出为 double ,但是我想要 float . auto one = 3.5; 对于带小数点的文字,是否始终使用 double ?如何确定浮点数和双精度数? 解决方案 文字 3.5 的类型为 double .对于 float ,请使用 3.5f 您可以使用此代码段来查看各种类型的信息.
..
我想创建一个简单的辅助算法,以几何级数填充容器(例如std::vector)(第一个项是a,第n个项由a * pow(r, n-1)给出) ,其中r是给定的比率);我创建了以下代码: #include #include #include template class Container,
..
使用docopt库查看以下代码: const USAGE: &'static str = "...something..."; #[derive(Deserialize)] struct Args { flag: bool, } type Result = result::Result>; fn mai
..
在 C ++ 中,您可以编写如下的 return语句: return ( ... ); 与流行的不同: return ... ; 特别是,第一个版本返回包含该return语句的函数堆栈本地内容的地址/引用. 现在为什么有些人想返回对当时没有生命期的东西的引用? 该习语的用例是什么?考虑到C ++ 11和C ++ 14中新的流行词和功能,对此有不同的用法吗? 解
..
我们有: template concept bool Numerics = ( std::is_arithmetic_v && ... ) ; template concept bool Numeric = std::is_arithmetic_v; 然后,我们让编译器推导出所有数字: templat
..
我面临的问题很简单.给出以下代码: template auto CallIt( ReturnType( *method )( Args... ) ) { return method; } auto test = CallIt( [] ( int a, int b ) { return a > b
..
考虑一个从std容器继承的类,该类具有模板构造函数,该模板构造函数调用容器的基础构造函数.此模板构造函数适用于简单的复制和移动构造函数,但不适用于initializer_list ctor. template class test : public container_T { public: using container_type = con
..
今天,我偶然发现了以下代码片段: #include int main() { auto a = [](std::pair value) { }; a(std::pair{ 3, true }); } http://cpp.sh/5p34 我只有一个问题:该代码受标准支持吗? 它可以在GC
..
template struct X { template X(Iter a, Iter b) {} template auto f(Iter a, Iter b) { return X(a, b); } }; 在"C ++模板,完整指南"
..
auto*的类型推导规则是什么? 请考虑以下内容: int x = 64; int* px = &x; auto* v1 = &x; // auto => ??? ok v1 is int* ... auto* v2 = px; // auto => ??? is v2 int* ? auto* v3 = &px; // auto => ??? i
..