看看C++ 11标准.我可以看到专业化std::tuple_size
和std::tuple_element
提供volatile
和const volatile
元组.
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>;
Run Code Online (Sandbox Code Playgroud)
但std::get
不提供专业化volatile
或const volatile
元组.
我在GCC.4.8.1上尝试了以下代码
volatile std::tuple<int, int> a(1, 1);
std::cout << "a<0>=" << std::get<0>(a) << "\n";
Run Code Online (Sandbox Code Playgroud)
我收到错误: no matching function for call to 'get(volatile std::tuple<int, int>&)'
所以如果我理解我可以创建(const)volatile元组但我无法访问它们的元素.
这是预期的行为还是疏忽?
非常感谢.