这是一个返回数组引用的转换函数:
struct S {
typedef int int_array_20[20];
operator int_array_20& ();
};
没有 可以做同样的事情typedef
吗?我试过的:
struct S {
operator int (&()) [10];
};
但clang抱怨:
error: C++ requires a type specifier for all declarations
operator int (&()) [10];
~ ^
error: conversion function cannot have any parameters
operator int (&()) [10];
^
error: must use a typedef to declare a conversion to 'int [10]'
error: conversion function cannot convert to an array type
做:
必须使用 typedef 来声明转换为 'int [10]'
意思typedef
是不可缺少?
编辑
如果typedef
有必要,不可能像下面这样创建转换函数模板,因为无法定义typedef
模板,对吗?
struct S {
template<typename T, int N>
operator T(&())[N];
};