Bạn đang trộn hai phương pháp khác nhau tại đây. Đầu tiên là một trong những đề xuất bởi @KerrekSB
template<typename T, bool B = is_fundamental<T>::value>
class class_name;
// NOTE: template<> is needed here because this is an explicit specialization of a class template
template<>
class class_name<string, false>{
public:
static string const value;
};
// NOTE: no template<> here, because this is just a definition of an ordinary class member
// (i.e. of the class class_name<string, false>)
string const class_name<string, false>::value = "Str";
Ngoài ra, bạn có thể hoàn toàn viết ra các lớp mẫu nói chung và chuyên một cách rõ ràng các thành viên tĩnh cho <string, false>
template<typename T, bool B = is_fundamental<T>::value>
class class_name {
public:
static string const value;
};
// NOTE: template<> is needed here because this is an explicit specialization of a class template member
template<>
string const class_name<string, false>::value = "Str";
Bỏ 'cái template <> 'trong định nghĩa 'giá trị'. –
@KerrekSB Cảm ơn bạn rất nhiều ! –
@KerrekSB Câu trả lời như thế này thường không bao giờ trở thành "trả lời"? Tôi đang cố gắng tìm hiểu những gì chúng ta nên/không nên làm khi chúng ta trả lời một cái gì đó trong một bình luận. – JaredC