void add_value(int  row, int column, double value)
 {
   add_value_internal(row, column, value);
 }
 void add_property_impl(TKey&& key, TValue&& value) {
     add_key_internal(std::forward<TKey>(key));
     add_value_internal(std::forward<TValue>(value));
 }
 void add_property_impl(const index_value_pair idxs) {
     add_key_internal(idxs.key());
     add_value_internal(idxs.value());
 }
 void add_property_impl(const property& property) {
     add_key_internal(property.key());
     add_value_internal(property.value());
 }
 void add_value_internal(T&& value) {
     encoded_property_value v{std::forward<T>(value)};
     add_value_internal(m_layer->add_value(v));
 }
 void add_value_internal(property_value value) {
     add_value_internal(m_layer->add_value(value));
 }