使用尾随返回类型时似乎有错误 Func_ptr的函数指针声明。我知道如果我将声明和初始化放在同一个语句中,或者只是通过直接指定返回类型来使用标准声明,我就可以做到,但我想了解语言的局限性,所以有人可以解释一下这个错误在代码如下:
“使用自动类型说明符声明的变量不能出现在其中 自己的初始化程序“
#include <utility>
#include <iostream>
int Func(const std::pair<int, int>& p)
{
std::cout << p.first << "->" << p.second << std::endl;
return 1;
}
int main()
{
auto (*Func_ptr)(const std::pair<int, int>& p) -> int;
//Error below, Func_ptr underlined, "a variable declared with the auto
//specifier cannot appear in its own initializer
Func_ptr = Func;
}
答案 0 :(得分:0)
问题是变量是用C ++ 03样式和函数格式用C ++ 11方式声明的。使它统一,它会工作。
// the old way
int (*Func_ptr1)(const std::pair<int, int>& p);
// the C++11
auto func_ptr2 = &Func;