#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; }
Standard input is empty
prog.cpp: In function 'int main()': prog.cpp:17:35: error: invalid initialization of reference of type 'const std::initializer_list<int&>&' from expression of type '<brace-enclosed initializer list>' prog.cpp:5:23: error: in passing argument 1 of 'T& minArgs(const std::initializer_list<T&>&) [with T = int]' In file included from prog.cpp:1:0: /usr/lib/gcc/i686-pc-linux-gnu/4.5.1/../../../../include/c++/4.5.1/initializer_list: At global scope: /usr/lib/gcc/i686-pc-linux-gnu/4.5.1/../../../../include/c++/4.5.1/initializer_list: In instantiation of 'std::initializer_list<int&>': prog.cpp:7:41: instantiated from 'T& minArgs(const std::initializer_list<T&>&) [with T = int]' prog.cpp:17:35: instantiated from here /usr/lib/gcc/i686-pc-linux-gnu/4.5.1/../../../../include/c++/4.5.1/initializer_list:52:26: error: forming pointer to reference type 'int&' /usr/lib/gcc/i686-pc-linux-gnu/4.5.1/../../../../include/c++/4.5.1/initializer_list:53:26: error: forming pointer to reference type 'int&' prog.cpp: In function 'T& minArgs(const std::initializer_list<T&>&) [with T = int]': prog.cpp:17:35: instantiated from here prog.cpp:7:41: error: 'const class std::initializer_list<int&>' has no member named 'begin' prog.cpp:8:39: error: 'const class std::initializer_list<int&>' has no member named 'begin' prog.cpp:8:39: error: 'const class std::initializer_list<int&>' has no member named 'end' prog.cpp:12:13: error: invalid initialization of reference of type 'int&' from expression of type 'const int'
Standard output is empty