25得票1回答
为什么自动返回类型会改变重载决策?

感谢 C++11 中的 decltype 作为返回类型,使得引入装饰器变得非常容易。例如,考虑这个类: struct base { void fun(unsigned) {} }; 我希望为它添加额外的功能,由于我将使用不同种类的装饰器多次进行此操作,因此我首先引入了一个装饰器类,该...

22得票1回答
在类内定义的函数的推断结果使用decltype进行推断

为什么会struct MyStruct { auto foo () { return 1; } auto bar () { return foo(); } }; 使用类似以下的尾返回类型时编译:struct MyStruct { auto foo () { return 1;...

18得票1回答
当使用std::function时,调用运算符会选择自动返回类型而不是构造函数。

以下代码片段: #include <functional> struct X { X(std::function<double(double)> fn); // (1) X(double, double); // ...

18得票3回答
如何为模板类中的方法定义返回类型?

我有一个模板类Helper,它看起来像这样:template< typename Mapper > class Helper { public: using mappedType = ... ; }; 我需要mappedType成为Mapper类中map(const in...

18得票2回答
使用私有成员变量进行返回类型推断

正如在昨天的问答中所解释的那样,g++ 4.8和Clang 3.3都会正确地报告下面的代码错误,例如“'b_'未在此范围内声明”。 #include <iostream> class Test { public: Test(): b_(0) {} auto f...

18得票3回答
三路比较运算符与不一致排序推断

不久前,我定义了我的第一个三路比较运算符。它比较单个类型并替换了多个传统运算符。这是一个很棒的特性。然后,我尝试通过委托实现一个类似的比较两个变体的运算符:auto operator <=> (const QVariant& l, const QVariant& r...

15得票2回答
施工助手make_XYZ允许RVO和类型推断,即使XZY具有非复制约束。

更新1:C++17为构造函数添加了类型推导,但这并不意味着自由函数是一个劣质解决方案。 更新2:C++17添加了保证的复制省略(即概念上甚至不进行复制)。因此,我的代码现在实际上可以使用最佳性能。但我认为仍然使用花括号初始化返回值的Martinho代码是更干净的解决方案。但请查看Barry的...

15得票2回答
CRTP和C++1y返回类型推导

最近我在使用CRTP进行编程时,当使用C++1y函数并推导类型时,遇到了一些令人惊讶的问题。下面的代码是有效的:template<typename Derived> struct Base { auto foo() { return static_c...

14得票4回答
在函数调用前如何推断出自动类型?

在尝试使用函数返回类型推断时进行实验auto func(); int main() { func(); } auto func() { return 0; } 错误:在推断‘auto’之前使用了‘auto func()’ 是否有一种方法可以在不需要在调用之前指定定义的情况下使用此功能?对...

13得票1回答
为什么在C++中,"return (str);"和"return str;"推断出不同的类型?

案例1:#include <iostream> decltype(auto) fun() { std::string str = "In fun"; return str; } int main() { std::cout &lt...