模板函数的字符串名称

String name of template function

我知道您可以使用预处理器在编译时通过 __func__

获取标准函数的文本名称

我的问题是,有没有什么方法可以获取模板函数的文本名称,包括其具体的实现细节(损坏总比没有好)?

例如,

template <typename T>
void myFunction() {
    std::cout << //Function name here;

};

输出:

myFunction<int>(); -> "myFunction<int>" (or mangled name)
myFunction<char>(); -> "myFunction<char>" (or mangled name)

要与 g++ 一起使用,您可以使用 __PRETTY_FUNCTION__

所以

#include <iostream>

template<typename T>
void myFunction() {
    std::cout << __PRETTY_FUNCTION__ << '\n';
};

int main() {
    myFunction<int>(); 
    myFunction<char>();
}

我明白了

void myFunction() [with T = int]
void myFunction() [with T = char]