Blick auf den C++ 11-Standard. Ich kann sehen, dass Spezialisierung von std::tuple_size
und std::tuple_element
für volatile
und const volatile
Tuple zur Verfügung gestellt werden.volatile und const flüchtige std :: tuple und std :: get
template <size_t I, class T> class tuple_element<I, volatile T>;
template <size_t I, class T> class tuple_element<I, const volatile T>;
template <class T> class tuple_size<volatile T>;
template <class T> class tuple_size<const volatile T>;
Aber std::get
tun kein Angebot Spezialisierung für volatile
oder const volatile
Tupels.
Ich habe versucht, den folgenden Code auf GCC.4.8.1
volatile std::tuple<int, int> a(1, 1);
std::cout << "a<0>=" << std::get<0>(a) << "\n";
ich Fehler: no matching function for call to 'get(volatile std::tuple<int, int>&)'
Wenn ich also verstehe ich (const) volatile Tupeln schaffen kann, aber ich kann nicht ihre Elemente zugreifen .
Ist dies ein erwartetes Verhalten oder ein Versehen?
Vielen Dank.
Funktioniert nicht auf GCC 4.9 entweder, fwiw. – Barry
'const volatile' erscheint mir als komische Kombination. Wer weiß von einem legitimen Gebrauch davon? – Cameron
@Cameron Hardware-Register, in die nicht geschrieben werden soll, die jedoch unter Ihnen geändert werden können. –