【发布时间】:2012-03-04 21:41:51
【问题描述】:
我有一个类的模板成员函数,用于将各种不同类型添加到列表中,并针对特定类型进行特殊处理和包装(所有内容最终都包装在 var 对象中):
template<typename V> const var& addvar(const V& v);
template<> const var& addvar<std::string>(const std::string& v) {/*stuff*/}
但是,我将这样的字符串(嗯,const char 数组)传递给它:
object.addvar("lol");
虽然我将所有内容都作为 std::strings 处理,但这会在模板参数类型推导中作为某种 const char 数组引用弹出。所以我得到一个关于没有函数的错误,即使有上面的 std::string 专业化。我对模板数组大小推导很熟悉,所以我正在尝试使用该格式来创建一个可以处理此类事情的 addvar,例如:
template<size_t N> const var& addvar<char>(const char& (&v)[N]) {/*stuff*/}
但是由于非法引用数组的编译器错误,事情变得非常糟糕。这是在 VC++ 2010 中,如果有任何具体的奇怪之处,但我觉得我在这里搞砸了一些基本的东西。
【问题讨论】: