在函数参数中使用decltype

时间:2013-06-27 11:22:40

标签: c++ c++11 coding-style

今天这似乎是一种常见的做法

auto foo(T a, K b) -> dectlype(a+b);

但这段代码是什么?

void foo(decltype(a));

在那里“a”是某类中的一种变量。像:

class SomeClass
{
    public:
    void foo(decltype(a)); 
    private: 
    int a;
};

现在,我知道oldstyle方法是使用typedef:

typedef int IntType;

但是什么是decltype?你觉得怎么样?

我认为 - 这有以下缺点:

  1. 不能在抽象接口中使用(没有“a”表示类型 )
  2. 使代码更难阅读
  3. 最常见的IDE不生成 正确的decltyped函数定义
  4. 我能想到的一位专业人士:

    1. 您可以安全地防止类型更改,而无需更改typedef。
    2. Tbh,我认为这种利弊远远超过了这种类型的使用,但我希望听到除了我以外的意见:)

1 个答案:

答案 0 :(得分:2)

我不希望我的API发生变化,因为我更改了某个变量的类型并忘记了这些影响。

如果我这样做,我想要编译错误。

就这样。