【发布时间】:2016-07-13 10:39:29
【问题描述】:
有人能解释一下这里发生了什么吗? GCC 5.2 的输出:
#include <iostream>
#include <tuple>
#include <string>
#include <typeinfo>
template <typename... Args>
void foo (Args&&... args) {
std::tuple<Args...> t = std::tie(args...);
std::cout << std::is_same<int, std::tuple_element_t<0, decltype(t)>>::value << '\n'; // true
std::cout << std::is_same<std::string, std::tuple_element_t<1, decltype(t)>>::value << '\n'; // false
std::cout << typeid(std::tuple_element_t<1, decltype(t)>).name() << '\n'; // A3_C (what's this???)
}
int main() {
foo (5, "hi");
}
为什么 std::string 类型丢失了,它变成了什么?
【问题讨论】:
标签: string templates c++11 tuples