Вы всегда можете делать именно то, что делаете, но заставляете его больше походить на кастинг. Для этого может быть даже разумный аргумент, например, возможность переопределения для большего количества типов и сохранения того же синтаксиса.
Рассмотрим:
template < typename DestType, typename SourceType >
DestType string_cast(SourceType const& source)
{
return string_cast_impl<DestType,SourceType>::apply(source);
}
template < typename DestType, typename SourceType >
struct string_cast_impl;
template < >
struct string_cast_impl<QString,icu_44::UnicodeString>
{
QString apply(icu_44::UnicodeString const& val) { return MyProject::ToQString(value); }
};
// etc...
Вы можете не использовать struct impl (потому что вам не нужно частично специализироваться ... когда-либо), или вы можете подумать об увеличении его, чтобы вы могли использовать enable_if. Во всяком случае, у вас будет общий интерфейс для преобразования типа строки, так что вам не нужно запоминать, какую функцию вызывать ... просто вызовите string_cast & lt; Dest> (source).
Edit: подумайте об этом, я делаю то, что вы делаете в одном из моих проектов, для преобразования из std :: string в / из std :: wstring. Я думаю, что я воспользуюсь этой альтернативой, чтобы заменить это.
Вы могли использовать метод $each jQuery для цикличного выполнения через все элементы со свидетельством класса. я => являюсь индексом элемента в наборе, и val дает Вам объект того конкретного элемента, и можно использовать "val" для дальнейшего доступа свойства элемента и проверить условие.
$.each($('.testimonal'), function(i, val) {
if(your condition){
//your action
}
});