我创建了一个模板类,我想使用用户定义的文字。
我的代码:
template<int base = 10>
class MyClass
{
// class code
};
// template<int base> /* Not allowed */
MyClass<17> operator "" _G(const char* param, size_t length)
{
string temp(param, length);
return MyClass<17> (temp);
}
int main()
{
MyClass<17> A = "75AD"_G;
A.print();
}
由于我的搜索,我知道用户用户定义的文字是有限的,不能用于上面的大多数模板。
是否有替代解决方案,或者在这种情况下用户定义的文字是不可能的?
注意:base
可以是2
到30
。
答案 0 :(得分:9)
实际上可能有一点间接性。我们的想法是将模板推断延迟到您拥有类型信息的位置。
auto a = 345_G
这是here成语的一个例子。
当然,请记住,这意味着MyClass<>
不会创建Popen(["t2x",cfile],env=denv,stdout=h)
类型的变量,尽管它可以传递给任何期望的函数。这可能是一个错误或一个功能,取决于你如何看待它。