小编use*_*984的帖子

如何实现编译时字符串转换功能?

提案n4121看起来好像要添加一个std::string_literal类型.它包含如下代码:

template<size_t n> struct string_literal { char data [n]; }
Run Code Online (Sandbox Code Playgroud)

和:

template <size_t N> 
constexpr int stoi( const string_literal<N>& str, 
                    size_t* idx = 0, int base = 10); 
Run Code Online (Sandbox Code Playgroud)

这是我的Number类:

template <typename T>
struct Number
{
private:
    T t;
public:
    constexpr Number(const T& t)
        : t(t)
    {
    }

    constexpr Number(const std::string& s);

    constexpr operator T() const
    {
        return t;
    }
};

template <>
constexpr Number<int>::Number(const std::string& s)
    : t(std::stoi(s))
{
}
Run Code Online (Sandbox Code Playgroud)

我已经看过如何在编译时将C字符串转换为int?但它只适用于C字符串.并且c_str()是非constexpr.另外最重要的是,这并不能掩盖stol …

c++ c++11 c++14

5
推荐指数
1
解决办法
1135
查看次数

标签 统计

c++ ×1

c++11 ×1

c++14 ×1