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 に答える