Horizon
Loading...
Searching...
No Matches
git_util.hpp
1#pragma once
2#include <git2.h>
3#include <type_traits>
4
5namespace horizon::git_util {
6template <typename T, typename = void> struct git_commit_needs_const : std::false_type {};
7
8template <typename T>
10 T, std::void_t<decltype(git_commit_create(std::declval<git_oid *>(), std::declval<git_repository *>(),
11 std::declval<const char *>(), std::declval<const git_signature *>(),
12 std::declval<const git_signature *>(), std::declval<const char *>(),
13 std::declval<const char *>(), std::declval<const git_tree *>(),
14 std::declval<size_t>(), std::declval<const T **>()))>>
15 : std::true_type {};
16
17using git_commit_maybe_const =
18 std::conditional_t<git_commit_needs_const<git_commit>::value, const git_commit, git_commit>;
19
20
21} // namespace horizon::git_util