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
}
これは、配列をポインタとして透過的に使用できないまれなケースの1つですか、それともコンパイラのバグですか?