__PRETTY_FUNCTION__的语法

时间:2018-03-25 22:27:50

标签: c++ gcc g++ grammar

GCC提供__PRETTY_FUNCTION__6.48 Function Names as Strings),这是一个带有函数名称的字符串。

例如以下程序:

#include <iostream>
#include <string>

namespace n1
{
namespace n2
{

template<typename T>
class t1
{
public:
    template<typename R>
    R f(T const&) const noexcept
    {
        std::cout << __PRETTY_FUNCTION__ << std::endl;
        return {};
    }
};

}
}

int main()
{
    n1::n2::t1<std::string>{}.f<double>(std::string{});
}

使用

构建时
g++ -Wall -Wextra -Wpedantic -std=c++14

g++ (GCC) 7.2.0(MinGW)上,产生以下输出:

R n1::n2::t1<T>::f(const T&) const [with R = double; T = std::__cxx11::basic_string<char>]

现在,问题是 - 我在哪里可以找到与此字符串对应的语法。显然它是基于C ++的,因为有来自C ++的组件(例如标识符),但是整个字符串肯定不是有效的C ++,所以它在C ++规范中找不到。

是否在任何地方指定了?

我猜它不是(毕竟上面提到的链接并没有说出来......)。但是,也许至少它可以从消息来源中读取 - 我会在哪里找到它们?

0 个答案:

没有答案