2017-07-18 2 views
0

参照を含む式の型を取得するにはどうすればよいですか?次の擬似コードは3回すべて異なる結果を与えることになります。参照を含むC++で式の型を取得する

int a = 5; 
std::cout << type(a) << std::endl; 
int &b = a; 
std::cout << type(b) << std::endl; 
int &&c = 5; 
std::cout << type(c) << std::endl; 

(。それはオプションではありませんので、typeidが何らかの理由で参照を無視します)

+0

どのような目的ですか? – Holt

+3

解決したい*実際の問題は何ですか?なぜ型を参照する必要がありますか? [XY問題](http://xyproblem.info/)を読んで質問がどのようになるか考えてみてください。 –

+0

@Someprogrammerdude私は言語を学び、正確な表現型を理解しようとしています:)それらを区別することは決して実際には必要ではないことを暗示していますか? – ledonter

答えて

3

あなただけ推定されるタイプを確認する必要がある場合は、1つのトリックは、インスタンス化に失敗したテンプレートを作ることです。

template<typename T> struct TD; 
TD<decltype(a)> tda; 
TD<decltype(b)> tdb; 
TD<decltype(c)> tdc; 

a/b/cという種類のコンパイルエラーが発生します。

関連する問題