2016-03-24 4 views
1

私は変数xを持っているが、と宣言しました。今私はxのタイプのstd::vectorの保持要素を宣言したいと思いますので、私は書く:typeof(x)をテンプレート引数として使用しますか? <code>f</code>の両方がどこかに定義された関数と変数<code>y</code>、ある</p> <pre><code>auto x = f(y); </code></pre> <p>:

std::vector<typeof(x)> v; 

これはコンパイルエラーになります。解決策はここでは明示的な引数をxとすることですが、これはxの宣言でautoの目的を破ると思います!だから、タイプを明示的に書かなくても、どのようにしてxの型をテンプレート引数として使うことができますか(型の変更では、私のコードは有効なままです)。

+3

'decltype(x)'? – peppe

+1

代わりに 'decltype()'を使用してください – DimChtz

+2

['decltype'](http://en.cppreference.com/w/cpp/language/decltype)を意味しましたか?あるいは、GCCとその '' typeof'(https://gcc.gnu.org/onlinedocs/gcc/Typeof.html)を実際に使っていますか?また、完全なコンパイラエラーメッセージを投稿できますか? – Cornstalks

答えて

4

GNUコンパイラのみがtypeofです。代わりに、C++ 11の機能であるdecltypeを使用してください。

関連する問題

 関連する問題