diff --git a/src/include/clapp/argument.h b/src/include/clapp/argument.h
index 6eddbf99eee6242de188af460d64a0416c4639ba..abb545adc6fca7b0aa7aae06561dec4b10c59277 100644
--- a/src/include/clapp/argument.h
+++ b/src/include/clapp/argument.h
@@ -103,6 +103,7 @@ arg_conf_container_t<T, ARG_CONF> gen_arg_conf(CALLBACKS&& callbacks,
 template <typename T>
 class basic_argument_t {
    public:
+    using value_t = T;
     using callbacks_t = argument_callbacks_t<T>;
     using arg_conf_t = basic_parser_t::single_arg_conf_t;
 
@@ -129,6 +130,7 @@ class basic_argument_t {
 template <typename T>
 class basic_variadic_argument_t {
    public:
+    using value_t = T;
     using callbacks_t = variadic_argument_callbacks_t<T>;
     using arg_conf_t = basic_parser_t::variadic_arg_conf_t;
 
diff --git a/src/include/clapp/option.h b/src/include/clapp/option.h
index f682fcb58ae3cb14f7009615c1bc907a39805208..ad360d736c6193c696c325bc27c9e737eab6862a 100644
--- a/src/include/clapp/option.h
+++ b/src/include/clapp/option.h
@@ -94,6 +94,7 @@ struct opt_conf_container_t {
 template <typename T>
 class basic_param_option_t {
    public:
+    using value_t = T;
     using callbacks_t = option_param_callbacks_t<T>;
     using opt_conf_t = basic_parser_t::opt_scalar_param_conf_t;
 
@@ -123,6 +124,7 @@ class basic_param_option_t {
 template <typename T>
 class basic_vector_param_option_t {
    public:
+    using value_t = T;
     using callbacks_t = option_vector_param_callbacks_t<T>;
     using opt_conf_t = basic_parser_t::opt_vector_param_conf_t;
 
@@ -157,6 +159,7 @@ class basic_vector_param_option_t {
 template <typename T, T default_value_param>
 class basic_option_t {
    public:
+    using value_t = T;
     using callbacks_t = option_callbacks_t<T>;
     using opt_conf_t = basic_parser_t::opt_no_param_conf_t;