static_cast を使用して、オーバーロードされている関数の取得

static_cast を使用して取得出来たんですね……。

[ソース]

#include <iostream>

void
func(int a){
    std::cout << a << std::endl;
}

void
func(float a){
    std::cout << a << std::endl;
}

void
func(float a, int b){
    std::cout << a << ":" << b << std::endl;
}

int main() {
    auto func1 = static_cast<void(*)(int)>(&func);
    auto func2 = static_cast<void(*)(float)>(&func);
    auto func3 = static_cast<void(*)(float, int)>(&func);

    func1(11);
    func2(3.14f);
    func3(3.14f, 11);
    return 0;
}

こんな事が出来るんですね、知らなかった……。