C++ 11 표준을 살펴 봅니다. 나는 std::tuple_size
및 std::tuple_element
의 특수화가 volatile
및 const volatile
튜플에 제공됨을 알 수 있습니다.volatile 및 const volatile std :: tuple 및 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>;
그러나 std::get
는 volatile
또는 const volatile
튜플에 대한 더 제공 전문화를하지 않는다.
volatile std::tuple<int, int> a(1, 1);
std::cout << "a<0>=" << std::get<0>(a) << "\n";
내가 얻을 오류 : 그래서 내가 (CONST) 휘발성 튜플을 만들 수 있지만 내가 그들의 요소에 액세스 할 수 없습니다 이해한다면 no matching function for call to 'get(volatile std::tuple<int, int>&)'
.
예상되는 동작입니까, 아니면 감독입니까?
대단히 감사합니다.
GCC 4.9에서는 작동하지 않습니다. – Barry
'const volatile'은 나를 이상한 조합으로 공격합니다. 누구든지 합법적 인 사용에 대해 알고 있습니까? – Cameron
@Cameron 하드웨어 레지스터는 써서는 안되지만 변경 될 수 있습니다. –