【发布时间】:2014-04-27 13:18:50
【问题描述】:
-
是否可以为类成员模板特化设置不同的访问修饰符?代码示例(不编译):
class SimpleClass { public: template <typename T> void Method(); template <> void Method<char>(); protected: template <> void Method<int>(); protected: template <> void Method<float>(); };-
子问题:是否可以为类的模板构造函数特化设置不同的访问修饰符?代码示例(不编译):
class SimpleClass { public: template <typename T> SimpleClass(T); template <> SimpleClass<char>(char); protected: template <> SimpleClass<int>(int); private: template <> SimpleClass<float>(float); };
-
-
是否可以为类模板成员特化设置不同的访问修饰符?代码示例(不编译):
template <typename T> class ClassTemplate { public: void Method(); template <> void Method<char>(); protected: template <> void Method<int>(); protected: template <> void Method<float>(); };-
子问题:是否可以为类模板的构造函数特化设置不同的访问修饰符?代码示例(不编译):
template <typename T> class ClassTemplate { public: ClassTemplate(T); template <> ClassTemplate<char>(char); protected: template <> ClassTemplate<int>(int); private: template <> ClassTemplate<float>(float); };
-
更具体地说: 在 1) 我正在为此类 C++11 代码寻找 C++03 解决方法:
class SimpleClass
{
public:
template <typename T>
SimpleClass(T);
template <typename T>
void Method();
};
template <>
SimpleClass::SimpleClass<char>(char);
template <>
SimpleClass::SimpleClass<int>(int) = delete;
template <>
void SimpleClass::Method<char>();
template <>
void SimpleClass::Method<int>() = delete;
在 2) 我正在为以下 C++11 代码寻找 C++03 解决方法:
template <typename T>
class ClassTemplate
{
public:
ClassTemplate(T);
void Method();
};
template <>
ClassTemplate<char>::ClassTemplate(char);
template <>
ClassTemplate<int>::ClassTemplate(int) = delete;
template <>
void ClassTemplate<char>::Method();
template <>
void ClassTemplate<int>::Method() = delete;
【问题讨论】:
标签: c++ templates c++11 template-specialization access-modifiers