Skip to content

Commit bf0fe02

Browse files
Handle const maps in RESTService.
1 parent 245f01b commit bf0fe02

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

Diff for: RESTProcess_base.h

+15-2
Original file line numberDiff line numberDiff line change
@@ -540,7 +540,11 @@ namespace classdesc
540540

541541
/// assign \a x if T is a map
542542
template <class T,class K>
543-
typename enable_if<is_pair<typename T::value_type>, void>::T
543+
typename enable_if<
544+
And<
545+
Not<is_const<T>>,
546+
is_pair<typename T::value_type>
547+
>, void>::T
544548
assignElem(T& obj, const K& k, const REST_PROCESS_BUFFER& x)
545549
{
546550
auto iter=obj.emplace(k, typename T::mapped_type()).first;
@@ -549,7 +553,11 @@ namespace classdesc
549553

550554
/// assign \a x if T is a set
551555
template <class T,class K>
552-
typename enable_if<Not<is_pair<typename T::value_type>>, void>::T
556+
typename enable_if<
557+
And<
558+
Not<is_const<T>>,
559+
Not<is_pair<typename T::value_type>>
560+
>, void>::T
553561
assignElem(T& obj, const K& k,const REST_PROCESS_BUFFER& x)
554562
{
555563
bool v; x>>v;
@@ -559,6 +567,11 @@ namespace classdesc
559567
obj.erase(k);
560568
}
561569

570+
template <class T,class K>
571+
typename enable_if<is_const<T>, void>::T
572+
assignElem(T& obj, const K& k,const REST_PROCESS_BUFFER& x) {}
573+
574+
562575
template <class T> class RESTProcessAssociativeContainer: public RESTProcessWrapperBase
563576
{
564577
T& obj;

0 commit comments

Comments
 (0)