たとえば、戻り値の型が X で入力パラメーター &Y を受け入れる関数へのポインターを宣言する一般的な形式は何ですか?
それは...ですか:
X my_function(Y &y){
//code
}
X (*my_pointer) (Y &y) = my_function;
?
X (*fptr)(Y&) = my_function;
または:
auto fptr = my_function; // c++11
または:
std::function<X(Y&)> fptr(my_function); // c++11, boost::function if not
あなたが書いたものはOKですが、その型の関数ポインタを宣言したいだけなら、通常は関数引数の名前を書きません:
X (*my_pointer) (Y&) = my_function;
好みに応じて、より C++11 っぽく書きたいと思うかもしれません:
#include <type_traits>
std::add_pointer<X(Y&)>::type my_pointer = my_function;
テンプレート エイリアスを使用すると、さらに読みやすくなります。
#include <type_traits>
template<typename T>
using AddPointer = typename std::add_pointer<T>::type;
AddPointer<X(Y&)> my_pointer = my_function;
または、 hmjd が回答で示唆しているようauto
に、関数型に明示的に名前を付けることを使用して忘れることさえあります。後でタイプを取得する必要がある場合は、次のようにすることができます。
decltype(my_pointer)
それは...ですか:
X my_function(Y &y){
//code
}
X (*my_pointer) (Y &y) = my_function;
?
はい