0

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

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

但是这段代码呢?

void foo(decltype(a));

其中“a”是某个类中变量的一种类型。喜欢:

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

现在,我了解旧式方法是使用 typedef:

typedef int IntType;

但是 decltype 呢?你怎么看?

正如我所看到的 - 这有以下缺点:

  1. 不能在抽象接口中使用(没有 "a" 类型)
  2. 使代码更难阅读
  3. 最常见的 IDE 不会为 decltyped 函数生成正确的定义

我能想到的一个专业人士:

  1. 您无需更改 typedef 就可以安全地避免类型更改。

Tbh,我认为缺点远远超过 decltype 的这种用法,但我想听听我以外的意见:)

4

1 回答 1

2

我不希望我的 API 改变,因为我改变了一些变量的类型并且忘记了影响。

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

就这样吧。

于 2013-06-27T12:48:03.797 回答