#include <initializer_list>
#include <iterator>
#include <cstdio>

template <class T> T& minArgs(const std::initializer_list<T&> &Arguments)
{
    const T* Smallest = Arguments.begin();
    for (const T* I = Arguments.begin(); I != Arguments.end(); ++I)
    {
        if (*I < *Smallest) Smallest = I;
    }
    return *Smallest;
}

int main()
{
    int min = minArgs({12, 44, 23});
    std::printf("%i\n", min);
    return 0;
}