Не стоит.
Создание шаблона возвращаемого типа означает, что вам придется явно указывать параметр шаблона при его вызове. Примерно так, возможно у меня неправильный синтаксис:
int i = obj.operator[]<int>("IntVal");
C ++ не выводит параметры шаблона из того, чему вы назначаете результат вызова, только из параметров, с которыми вы вызываете функцию.
Так что вы можете просто определить нормальную функцию:
int i = obj.get<int>("IntVal");
Или в этом случае либо сделайте это, либо внедрите get
, используя это:
int i = boost:lexical_cast<int>(obj["IntVal"]);
Как говорит Амит, вы можете определить operator[]
для возврата типа, который может быть преобразован либо в int
, либо в другие типы. Затем ваш пример кода может быть скомпилирован без явного lexical_cast.