すいません、自己解決の形になってしまいましたが

const char* = int,etc
とするために、
template <class Type> Type minof(type *x, int n)
とするか、

配列の中身を書き換えたくないという意を保つなら
template <>
const char* minof<const char*>(const char* const (*x),int n)
でやると通りました・・・
constの扱いで頭おかしくなりそうです、これで本当に合っているのか
int x[]=const char (*x)[]
int x[0]の書き込み禁止=const char (*x)[0]の書き込み禁止
↓
const int *x = const char* const (*x)でしょうかね