Моя внутренняя проверка работоспособности не удалась, поэтому я переигрываю ее на Stackoverflow.
Следующий код:
#include <iostream>
#include <typeinfo>
#include <utility>
int main()
{
constexpr auto pair_of_ints = std::make_pair(1, 2);
std::cerr << typeid(pair_of_ints).name();
//static_assert(std::is_same<decltype(pair_of_ints), std::pair<int, int>>::value, "WTF");
}
производит имя искаженного символа для std::__1::pair<int, int>
в моей системе (XCode Clang 8.x).
Если я затем static_assert
, он не сработает. Понятия не имею почему. Как я могу сделать эту работу? У меня есть функция, которая возвращает пару или кортеж в зависимости от переданных ему аргументов и хочет проверить, действительно ли она возвращает пару или кортеж в правильных случаях.