【发布时间】:2016-06-25 21:28:10
【问题描述】:
我在我的字符串类中重载了一个函数,但是它永远不会被调用。为什么?
template <class T>
class StringT {
public:
void assign(const T* ptr);
template <size_t N> void assign(const T(&ptr)[N]);
};
int main() {
StringT<char> str;
str.assign("Hello World"); //calls "void assign(const T* ptr)" although type is (const char[12])
}
【问题讨论】:
-
有趣,我没想到会这样。我在这里做了一个稍微复杂一点的例子:cpp.sh/7hnfk 这与微软关于 auto s = "thing"; 的断言一致。默认情况下会产生一个 const char * (msdn.microsoft.com/en-us/library/69ze775t.aspx)。
标签: c++ templates overloading