decltype

    4

    4答えて

    は、次のコードを検討メンバ変数const性を推定するために失敗しましたコンパイラはこれがconstメンバ関数であることを知らないので、const Cのタイプのcであり、その結果、実際にはB<const C>ではなく、f(c)の型がB<C>であると誤って推測されます。 私は間違って何かをしていますか、これはコンパイラのバグですか? gcc 4.6を使用しますが、4.4と4.5は同じ動作を示します。

    16

    1答えて

    #include <list> class MyContainer{ std::list<int> ints; auto begin() -> decltype(ints.begin()) { return ints.begin(); } auto begin() const -> decltype(ints.begin())

    3

    1答えて

    私は int a; decltype(a) b; を書くことができますが、私のコンパイラ(マイクロソフトのVisual Studio 2010、clバージョン16.00.40219.01は)私に class A { int a; decltype(a) b;// error C2327: 'A::a' : is not a type name, static, or e

    7

    3答えて

    現在受け入れているC++ 11の機能を習得しようとしており、autoとdecltypeに問題があります。学習の練習として、いくつかの一般的な関数を使ってstdクラスリストを拡張しています。 template<class _Ty, class _Ax = allocator<_Ty>> class FList : public std::list<_Ty, _Ax> { public:

    9

    1答えて

    私はすべてのイテレータのラッパーであるテンプレートクラスを作成しています。私はクラスTのオペレータ*にdecltype呼び出しを与え、それも動作しますが、Tが、それは文句を言わない仕事デフォルトコンストラクタを持っているdoesntの場合 template <typename T> class MyIterator { public: //... decltype(*T()

    12

    1答えて

    は、次のコードを考えてみましょう:だから int&& x = 42; static_assert(std::is_same<decltype(x), int&&>::value, "&&"); static_assert(std::is_same<decltype((x)), int& >::value, "&"); を、xの種類は何ですか?それはint&&またはint&ですか? (私はt

    11

    3答えて

    私はちょうどthis really nice talkを見たことがあります。ロックハード:C++ Evilving Boris Jabes。 高次ジェネリックプログラミングに関する話のセクションでは彼は次のようにその戻り値の型にに関してより一般的な関数の一例であり、少数のテンプレート関数につながる template <typename Func> auto deduce(const Func &

    2

    1答えて

    decltypeはそのパラメータの型を返すと想定されています。 カンマ式​​の右手オペランドの型が想定されています。以下の例では、VS2010でコンパイルするとc2以外はすべてfalseになります。それは私には奇妙ですが、明確に標準に準拠していますが、c4とc5についてはわかりませんが...これは正しいのですか、それともコンパイラのバグですか?残念なことに、私の実際のコードはis_referenc