Шаблоны делают большую часть информации о параметрической подписи параметрируемой отдельно от имени функции. Но можно ли параметризовать константу функции-члена?
Тривиальный, минималистский, не шаблонный пример:
struct Foo {
Foo * self() { return this; }
Foo const * self() const { return this; }
};
vs straw-man шаблонный гипотетический:
struct Foo {
template<typename T> T self() std::constness_of(T) { return this; }
};