C++ 如何打印STD的元素::向量

C++ 如何打印STD的元素::向量,c++,C++,系统能够使用.type.name计算出每个元素的类型,但无法打印它们 #include <iostream> #include <vector> #include <any> #include <string> #include <algorithm> template<typename Last> void addElement(std::vector<std::any>& container

系统能够使用.type.name计算出每个元素的类型,但无法打印它们

#include <iostream>
#include <vector>
#include <any>
#include <string>
#include <algorithm>
    
template<typename Last>
void addElement(std::vector<std::any>& container, Last last) {
    std::cout << "Last = " << last << std::endl;
    container.push_back(last);
}

template<typename First, typename... Rest>
void addElement(std::vector<std::any>& container, First first, Rest... rest) {
    std::cout << "Elem = " << first << std::endl;
    container.push_back(first);
    addElement(container, rest...);
}

template<typename... Ts>
std::vector<std::any> createAnyVector(Ts... ts) {
    std::vector<std::any> container;
    addElement(container, ts...);
    return container;
}

int main() {
    std::cout << "ANYVECTOR" << std::endl;

    std::vector<std::any> container = createAnyVector("Hello", 3.14, 'A', true, 42);

    std::cout << "Number of elements in container = " << container.size() << std::endl; // 5 correct.

    for (const auto& a : container) {

        std::cout << a.type().name() << ", " << "HERE?" << std::endl;
    }
}

你不能打印它,因为如果它是一种无法打印的类型呢?错误是告诉你没有操作员或者雷米说了什么。您必须设计运算符或其他机制,以便在运行时从程序中选择适当的数据类型。使用诸如std::variant之类的标记联合会更容易。不仅您无法打印它们,而且您几乎无法对它们执行任何操作。所有类型的通用接口是什么?没有什么使用std::variant。从您的个人资料中,我猜您不会深入了解较低级别的内容。如果您觉得这个限制令人难以置信,那么自己实现std::any可能会有所启发,看看为什么会出现这种情况,以及您需要付出什么代价才能拥有这个功能。另外,STD:在C++中,任何一个都是错误的。你不能打印它,因为如果它是不可能打印的类型,那么错误会告诉你,里米说的没有操作符。您必须设计运算符或其他机制,以便在运行时从程序中选择适当的数据类型。使用诸如std::variant之类的标记联合会更容易。不仅您无法打印它们,而且您几乎无法对它们执行任何操作。所有类型的通用接口是什么?没有什么使用std::variant。从您的个人资料中,我猜您不会深入了解较低级别的内容。如果您觉得这个限制令人难以置信,那么自己实现std::any可能会有所启发,看看为什么会出现这种情况,以及您需要付出什么代价才能拥有这个功能。另外,STD::在C++中,几乎任何错误都是错误的。
No operator << matches these operands
operand types are: std::basic_ostream<char, std::char_traits<char>> << const << std::any