C++ 从函数返回std::variant

C++ 从函数返回std::variant,c++,xcode,clang,clang++,variant,C++,Xcode,Clang,Clang++,Variant,我试图从我的函数返回一个std::vector或std::vector,但编译器抱怨这行ret={1,2,3,4,5,6,7,8,9,0} class CharFactory { public: static std::vector<std::variant<long,char>> getChars(TokenType t){ std::vector<std::variant<long,char>>

我试图从我的函数返回一个
std::vector
std::vector
,但编译器抱怨这行
ret={1,2,3,4,5,6,7,8,9,0}

class CharFactory {
    public:
        static std::vector<std::variant<long,char>> getChars(TokenType t){
            std::vector<std::variant<long,char>> ret;
            switch (t) {
                case TokenType::BINOP:
                    ret = {'+','-','*','/'};
                    break;
                case TokenType::NUMBER:
                    ret = {1,2,3,4,5,6,7,8,9,0};
                    break;
                case TokenType::LP:
                    ret = {'('};
                    break;
                case TokenType::RP:
                    ret = {')'};
                    break;
                default:
                    ret = {};
            }
            return ret;
        }
};
我用谷歌搜索了一下,但找不到解决办法。我怎样才能纠正这个错误

谢谢

这是不明确的。您有
long
char
的变体,但它们是
int
文本。它们应该转换成什么<代码>长
字符

如果希望它们是
long
,请改为使用
long
文字:

ret = { 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 0L };

谢谢在本例中,我希望编译器将
int
解释为
long
,但显然我错了。
ret = {1,2,3,4,5,6,7,8,9,0};
ret = { 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 0L };