这些是一个较少的方法的模板片段,它将输入两个泛型参数作为输入并返回bool结果
其次是const char *
指针的第三部分特化
template<typename T> //general form
class C{
public: bool isLess(const T& v1, const T& v2){
return v1<v2;
}
};
template<> //explicit specialization for char*
class C<const char*>{
public: bool isLess(const char* v1, const char* v2){
return strcmp(v1,v2) < 0;}
};
template <typename T> //partial specialization for pointers
class C<T*> {
public: bool isLess(T* v1, T* v2){return *v1 < *v2;}
};
//partial specialization for functions?
答案 0 :(得分:2)
我认为你想要或多或少的东西如下:
Const c_URL = "https://api.sandbox.paypal.com/v1/oauth2/token"
Const c_UserID = "AZxxxxxx" '// Here i put my real Client-ID
Const c_Secret = "EBxxxxxx" '// Here I put my real Secret
Const c_Data = "grant_type=client_credentials"
Dim x_HTTP
Set x_HTTP = Server.CreateObject("Msxml2.ServerXMLHTTP")
Call x_HTTP.Open("POST", c_URL, False)
Call x_HTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
Call x_HTTP.setRequestHeader("Accept", "application/json")
Call x_HTTP.setRequestHeader("Accept-Language", "en_US")
Call x_HTTP.setRequestHeader("Authorization", "Basic " + Base64Encode(c_UserID + ":" + c_Secret))
Call x_HTTP.Send(c_Data)
答案 1 :(得分:1)
你没有部分专业化的功能;你所拥有的是重载和std::enable_if<c, T>
。提示:对于返回给定std::enable_if<c, T>::type
的T的函数,您可以c
。
答案 2 :(得分:0)
您不需要部分专门化功能模板,因为与类模板不同,您可以使用相同数量的多个功能,即重载。
#include <iostream>
#include <cstring>
template <class T> bool isLess(const T &v1, const T &v2) {
std::cerr << "general\n";
return v1 < v2;
}
bool isLess(const char *v1, const char *v2) {
std::cerr << "str\n";
return strcmp(v1, v2) < 0;
}
template <typename T> bool isLess(T *v1, T *v2) {
std::cerr << "pointer\n";
return *v1 < *v2;
}
int main() {
int x = 0;
int y = 1;
auto s1 = "hey";
auto s2 = "there";
std::cerr << isLess(x, y) << "\n";
std::cerr << isLess(s1, s2) << "\n";
std::cerr << isLess(&x, &y) << "\n";
}
输出:
general
1
str
1
pointer
1