![](/img/trans.png)
[英]Convert a C++ integral type template parameter to a “longer” integral type
[英]Type inference for integral template parameter
我創建了一個包含方法唯一標識的類型
template <typename Method, Method method>
struct identity {
};
因此,我可以以獨特的方式描述方法,即使它們具有相同的簽名
struct Class {
void foo() {}
void bar() {}
};
typedef identity<decltype(&Class::foo), &Class::foo> foo_identity;
typedef identity<decltype(&Class::bar), &Class::bar> bar_identity;
std::cout << std::boolalpha << std::is_same<foo_identity, bar_identity>::value << std::end;
// prints "false"
由於實例化方法的身份過於冗長,因為兩個名稱都使用了兩次,因此可以縮短:
#define GEN_IDENTITY(NAME) identity<decltype(&NAME), &NAME>
GEN_IDENTITY(Class::foo)
但有沒有辦法在不使用宏的情況下推斷它? 或者也許還有其他方法可以獲得一種獨特地描述方法的類型?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.