c++はstring型を使ってやれば文字列を簡単に扱えると思うのですが、あえてconst char*型を使って文字列を扱おうと思うのですが、どうすればconst char*型の文字列を連結できるのですか?

例: "abc" "abcc" の二つのconst char*型を連結して "abcabcc" と一つのconst char*型に入れたいです。調べてこの関数を使って入れたのですが、rsize_t型とsize_t型の違いについても教えていただけますでしょうか?

template<typename type> type f(type a,type b) {
    cout << "テンプレート関数\n";
    return a + b;
}

template<> const char* f<const char*>(const char* x, const char* y) {
    //cout << "明示的特殊化\n";
    char* xx = const_cast<char*>(x);
    rsize_t t = sizeof(xx);
    strcat_s(xx, strlen(xx), y);  //ここの関数で書き込みアクセスエラーが出ます。
    cout << xx;
    return  "a";
}

int main() {
    cout << f<const char*>("abc", "abcc");
    _getch();
    return 0;
}