在C++1y中,函数的返回类型可以涉及到本地定义的类型:
auto foo(void) {
class C {};
return C();
}
类名C
在foo
体外不在作用域内,因此您可以创建类实例,但不能指定其类型:
auto x = foo(); // Type not given explicitly
decltype(foo()) y = foo(); // Provides no more information than 'auto'
有时候明确指定一个类型是很有必要的。也就是说,写下 "在foo中定义的类型C" 要比写 "foo返回的任何类型" 更有用。那么有没有办法明确地写出 foo
返回值的类型呢?
return
语句时,因此您也无法在那里定义本地类型)。 - Mike Seymourusing foo_C = decltype(foo());
。 - dyp