如何将BOOST_METAPARSE_STRING
编译时模板参数转换为“常规”字符串?
我正在使用BOOST_METAPARSE_STRING
提供一个字符串作为模板参数(以单行/单行形式)。
以下可以正常编译:
template<class T>
struct t{
};
t< BOOST_METAPARSE_STRING("hello") > tt_;
但是,我还需要在某个时候显示字符串等,但是我还没有找到一种方法来构造某种形式的运行时字符串std::string
/不论是编译时类型的。我知道这是可能的,但是怎么办?
我还想知道是否可以作为模板参数值(例如const char*
)传递吗?
答案 0 :(得分:2)
根据BOOST_METAPARSE_STRING
的{{3}},它生成boost::metaparse::string
的特殊化(记录在the documentation中)。由于这是一个简单的类模板,因此转换起来很容易:
template <char... Chars>
std::string toString(boost::metaparse::string<Chars...>) {
return {Chars...};
}
或者,如果您不想在翻阅文档(糟糕)之前重新发明轮子,那就是See it live on Coliru所做的。