Имеется функция: char *StrFunc(char const *str) {} Внутри она использует str именно как char const * (только чтение) и потом возвращает например: str+N (N - типа int). Но в качестве вх. аргумента в неё могут передаваться как char * так и char const * - нет проблем, приведение типа делается автоматом. Но хочется, чтобы и возвращаемое значение было того же типа, что и передано: для char * - char *, для char const * - char const *. Чтобы не было необходимости делать: char const *s; ... ; s = (char const *)StrFunc(s); Понятно, что можно объявить inline функцию, в которой сделать приведение к нужному типу. Но тогда, с низким уровнем оптимизации, функция не будет заинлайнена. Или можно перегрузить эту функцию с другим типом аргумента/возвращаемого значения - опят будут две функции, выполняющие одно действие. Может есть более элегантное решение? Как бы так объявить алиас для данной функции с другим типом аргумента/возвращаемого значения?
|