teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

2021/04/17 03:38

投稿

hoge111
hoge111

スコア17

title CHANGED
File without changes
body CHANGED
@@ -57,5 +57,32 @@
57
57
  ????どうにかしてコンストラクタの引数の型を取得する方法が知りたいです
58
58
  ????よろしくお願いいたします
59
59
 
60
+ ---
61
+
62
+ **欲を言えば**```class A```に変更を加えずに取得したいです
63
+
64
+ ```cpp
65
+
66
+ template <std::size_t N, typename Class, typename Return, typename ... Args>
67
+ constexpr auto getArgType(Return(Class::*)(Args...)) {
68
+ return std::tuple_element_t<N, std::tuple<Args...>>();
69
+ };
70
+
71
+ //class Aの記述はこのままに
72
+ struct A {
73
+ A(int) {}
74
+ void hoge(int) {}
75
+ };
76
+
77
+ int main() {
78
+ //ここで型を取得する処理
79
+ using ArgType = decltype(getArgType<0>(&A::A));
80
+
81
+ std::cout << typeid(ArgType).name();
82
+ }
83
+
84
+ ```
85
+
86
+
60
87
  ## 環境
61
88
  c++20

1

a

2021/04/17 03:38

投稿

hoge111
hoge111

スコア17

title CHANGED
File without changes
body CHANGED
@@ -20,7 +20,7 @@
20
20
  int main() {
21
21
  using ArgType = decltype(getArgType<0>(&A::hoge));
22
22
 
23
- std::cout << typeid(ArgType).name();
23
+ std::cout << typeid(ArgType).name();//出力 int
24
24
  }
25
25
 
26
26
  ```