Ich möchte eine Eigenschaft des Typs einer Variablen testen. Ich kann es, aber der Code ist zu ausführlich.Typ Merkmal durch eine Variable des Typs
Betrachten wir ein Beispiel, in dem ich eine Variable vom gleichen Typ wie der Typ eines Werts in einem Behälter zu definieren:
#include <vector>
int main() {
std::vector<int> v, &rv=v;
// ‘rv’ is not a class, namespace, or enumeration
//rv::value_type i1;
// Ok
decltype(v)::value_type i2;
// decltype evaluates to ‘std::vector<int>&’, which is not a class or enumeration type
//decltype(rv)::value_type i3;
// Ok
std::remove_reference<decltype(rv)>::type::value_type i4;
}
kann ich leben decltype
, aber std::remove_reference
Zugabe zu viel ist. Gibt es eine gute Möglichkeit, den Code zu verkürzen, ohne Hilfsvorlagen zu definieren?
Welche Eigenschaft möchten Sie testen? (Das sieht ähnlich aus wie ein [XY Problem] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem).) – molbdnilo
Weiß nicht, die 'remove_reference' Zeile sieht nicht so aus schlecht für mich, esp. wenn man bedenkt, dass man das nicht Dutzende Male machen wird. Davon abgesehen lautet die Antwort wahrscheinlich "Nein". –
Wenn Sie es wiederholt verwenden, verwenden Sie möglicherweise eine 'using' Anweisung und alias es zu' value_type' oder etwas – jaggedSpire