decltype是一个C ++ 11关键字,可用于查找表达式的类型。
我有一个实用函数,用于根据函子转换可交互对象。 模板 自动变换(可迭代 const& 输入,Functor&& trans...
使用 decltype 进行模板化函数声明会导致定义模板化函数时出现“冲突”
我使用decltype来确保模板函数force2与另一个模板函数force1具有相同的参数和返回类型,但它无法编译。我需要将函数模板化。
使用 decltype 进行函数声明会导致定义函数时出现“冲突”
我使用decltype来确保模板函数force2与另一个模板函数force1具有相同的参数和返回类型,但它无法编译。我需要将函数模板化。
这段代码中,a + b 执行了一次还是两次?验证这一点的好方法是什么? double num3 = [](double a, double b)->decltype(a + b) { return a + b; }(1.2,2.1);
在模板函数中,我试图创建一个 std::vector ,其 value_type 依赖于该函数的模板参数的成员函数。该模板参数受到限制...
有没有办法确定成员函数指针的返回类型? 代码示例: ///// 我的图书馆 void my_func(auto mptr) { // 必须使用 `auto` // 一些基于 mptr 返回类型的逻辑:...
C++11:在类中查找方法和错误:嵌套名称说明符中使用的类型不完整
使用 C++11 中的 CRTP 习惯用法,我试图检查派生类是否具有名为 size 的方法。 #包括 模板 结构 IsContainer { 模板<
我有许多无法修改的类。每个构造函数都有一个复制构造函数、至少一个其他构造函数以及一个返回某个值的函数 foo()。我想制作一个可以的类模板
例如 A级 { int foo() {返回 1;} void goo( decltype(((A*)nullptr)->foo()) i) {} }; decltype(((A*)nullptr)->foo()) 在这里不起作用,因为 A 是不完整的类。怎么...
我试图声明一个变量,使其类型与我有一个成员函数指针的成员函数的返回类型相同。 类小部件{ 民众: std::计时::
有时,在您不想显式指定类型的情况下创建正确类型的变量非常有用,特别是当类型是复杂类型(例如 std::map)时 有时,在您不想显式指定类型的情况下创建正确类型的变量非常有用,特别是当类型是复杂类型时,例如std::map<std::string, std::tuple<int, SomeStructure>>(1)。这是几乎总是自动指南的核心。 对于初始化变量的情况,可以使用: auto a = 3.14159f; // float. auto a = function_returning_type(1, 2, 3); // whatever that function returns. 如果你不想初始化它,你可以使用decltype来定义它: int a; decltype(a) b; // integer float c(); decltype(c()) d; // float 如果您希望将类型基于某个函数返回的内容而不是基于已经存在的变量,那么最后一个特别方便。但是,如果该函数的唯一重载需要很多参数,则似乎需要您提供它们: int a(const char *, int, float); decltype(a("", 7, 4.2)) b; // okay decltype(a()) c; // not okay 第二个示例给出了类似的内容: error: too few arguments to function ‘int a(const char *, int, float)’ decltype(a()) c; ^ 尽管事实上在这种情况下不应该“需要”参数,因为编译器可以在没有参数的情况下确定参数。无论如何为其提供了许多重载,函数的返回类型都是相同的。 所以我的第一个问题是:我是否误解了这样做的必要性?换句话说,我需要提供参数是否有实际原因? 第二(这是真正的问题),有没有一种方法可以做到这一点不需要我提供这些人工参数? (1) 是的,我知道我可以做类似 using ShortType = std::map<std::string, std::tuple<int, SomeStructure>>; 的事情,但这并不总是我的代码。 无论为函数提供多少个重载,其返回类型都是相同的。 不,无论如何都不是。以下是完全有效的重载。 int getValue(float); float getValue(int);
decltype 和 auto 作为变量的占位符类型有什么区别?
据我了解, decltype 和 auto 都会尝试找出某物的类型。 如果我们定义: int foo () { 返回 34; } 那么这两个声明都是合法的: 自动 x = foo(); c...
在 c++14 中引入了 decltype(auto) 习惯用法。 通常,它的用途是允许自动声明在给定表达式上使用 decltype 规则。 寻找“良好”用法的示例...
我正在学习 C++ 11 中的 decltype。 auto 和 decltype 的功能似乎是重复的,我不明白为什么我们需要 decltype。 根据维基,它的主要用途是通用程序......
我正在维基百科上阅读这篇关于 C++11 类型推断功能的文章。 有一个例子,我引用一下: #包括 int main() { const std::vector v(1); ...
`decltype(true ? std::declval<T1>() : std::declval<T2>())` 是如何工作的?
我看到了模板函数max的示例代码。 模板 () ...
考虑下面的代码: 结构 LambdaWrapper { 自动 getLambda() { 返回 []() { std::cout << "Lambda is called" << std::endl; }; } }; void
我希望能够形成一个只知道类本身和方法名称的成员指针类型。不幸的是,我无法在我的类中拥有 const 和非常量方法变体。
decltype、dyn、impl 特征,以及重构时如何声明函数的返回类型
我是 Rust 新手,但是是从 C++ 角度/背景接触 Rust 的编程老手,所以这可以解释我的大部分困惑。 我的核心是一个令人麻木的简单问题......
decltype(void())中的void()是表达式还是函数类型?
这是这个问题的后续,更准确地说是这个答案的评论。 decltype(void()) 中的 void() 到底代表什么? 它代表函数类型、表达式还是