Mooing Duck делает комментарий here что «одна функция не может возвращать несколько типов. Однако вы можете специализировать или делегировать перегрузки, что отлично работает».Перегрузка шаблона по типу возврата
Я начал думать о том, что, и я пытаюсь выяснить, как это юридический код:
template <typename T>
T initialize(){ return T(13); }
При вызове:
auto foo = initialize<int>();
auto bar = initialize<float>();
ли не то, что переводить на 2 функции с одним и тем же именем, перегруженные только возвратным типом?
Нет. Одна функция называется 'initialize', а другая называется 'initialize '. –
@JonathanMee Я имел в виду, что 'T initialize() {if (T == int) возвращает 0; if (T == string) return "HI";} 'не собирается летать. Одно тело функции не может иметь несколько типов. Чтобы сделать что-нибудь интересное, вам нужно использовать сложные трюки –
@MooingDuck Ах, спасибо за разъяснение, я начинал удивляться. Да, я думаю, что поведение в любом случае противоречило бы всей идее «шаблона». Что-то вроде 'T initialize() {return T (13);}', вероятно, имеет смысл. –