相关疑难解决方法(0)

auto和decltype之间的关系

auto x = initializer;
Run Code Online (Sandbox Code Playgroud)

相当于

decltype(initializer) x = initializer;
Run Code Online (Sandbox Code Playgroud)

要么

decltype((initializer)) x = initializer;
Run Code Online (Sandbox Code Playgroud)

还是两个?

c++ type-inference decltype auto c++11

34
推荐指数
3
解决办法
3504
查看次数

我何时应该使用decltype(x)而不是auto来声明变量的类型?

我看到decltype(x)在宏中使用的x是一个变量名,因为在宏内部不知道对象的类型.

例如:

decltype(x) y = expr;
Run Code Online (Sandbox Code Playgroud)

我可以轻松使用auto而不是decltype.那么decltype变量类型声明需要哪些情况而不是auto

c++ c++11

33
推荐指数
6
解决办法
4994
查看次数

为什么在C++ 11中需要decltype?

我正在学习C++ 11中的"decltype".

"auto"和"decltype"的功能似乎重复,我不明白为什么我们需要"decltype".

根据维基,其主要用途是在通用编程中,通常很难甚至不可能表达依赖于模板参数的类型.

在通用编程中,当难以表达类型时,我可以使用"auto":

template <typename T>
void MakeAnObject (const T& builder)
{
    auto val = builder.MakeObject();
    // do stuff with val
}
Run Code Online (Sandbox Code Playgroud)

我不明白为什么需要"decltype".

"decltype"可以做"自动"不能做的事情吗?

提前致谢.

c++ decltype auto c++11

5
推荐指数
1
解决办法
1160
查看次数

decltype和auto之间的等价性

由于auto和decltype都用于推断类型.我以为他们会一样的.

但是,这个问题的答案表明不然.

我仍然认为他们不可能完全不同.我可以想到一个简单的例子,其中i两种情况下的类型相同.

auto i = 10; and decltype(10) i = 10;
Run Code Online (Sandbox Code Playgroud)

那么auto和decltype行为相同的可能情况是什么呢?

c++ type-inference decltype auto

1
推荐指数
1
解决办法
487
查看次数

标签 统计

c++ ×4

auto ×3

c++11 ×3

decltype ×3

type-inference ×2