我正在尝试将指向struct
s 数组的指针作为模板参数传递。一段时间后我设法做到了:
struct something{};
constexpr const something single;
constexpr const something array[12];
template<const something* arg> void f() {}
template<typename T>
constexpr T* workaround(T* v){
return v;
};
void bind(){
f<&single>(); //OK
f<array>(); //NO
f<&array>(); //NO
f<&array[0]>(); //NO
f<workaround(array)>(); //NO
f<(const something*)array>(); //OK
}
这是数组不能透明地用作指针的罕见情况之一,还是编译器错误?