Es Sort- de posible, pero el uso no se verá muy bien. Para exxample:
#include <vector>
#include <iostream>
#include <algorithm>
#include <iterator>
template <class T>
class list_of
{
std::vector<T> data;
public:
typedef typename std::vector<T>::const_iterator const_iterator;
const_iterator begin() const { return data.begin(); }
const_iterator end() const { return data.end(); }
list_of& operator, (const T& t) {
data.push_back(t);
return *this;
}
};
void print(const list_of<int>& args)
{
std::copy(args.begin(), args.end(), std::ostream_iterator<int>(std::cout, " "));
}
int main()
{
print((list_of<int>(), 1, 2, 3, 4, 5));
}
Esta deficiencia se fijará en C++ 0x donde se puede hacer:
void print(const std::initializer_list<int>& args)
{
std::copy(args.begin(), args.end(), std::ostream_iterator<int>(std::cout, " "));
}
int main()
{
print({1, 2, 3, 4, 5});
}
o incluso con tipos mixtos:
template <class T>
void print(const T& t)
{
std::cout << t;
}
template <class Arg1, class ...ArgN>
void print(const Arg1& a1, const ArgN& ...an)
{
std::cout << a1 << ' ';
print(an...);
}
int main()
{
print(1, 2.4, 'u', "hello world");
}
¿Por qué necesita hacer usando el operador de coma? P.ej. Boost.Assign ya te da una sintaxis ordenada, pero usa 'operator()'. –
porque quiero el uso tan simple como MyFunction (1,2,3) no MyFunction (boost :: list_of (1) (2) (3)) – uray