Внимание! Эта проблема касается только MSVS.
У меня есть эта подпись функции:
void do_somthing(std::vector<foo>& bar={});
Можно ли различать эти два вызова функции:
Первый:
do_something()
Второй:
std::vector<foo> v;
do_something(v);
Другими словами, я хочу что-то вроде:
void do_somthing(std::vector<foo>& bar={}){
if(/* bar was defaulted*/){
}
else{
}
}
EDIT: Фактический код:
template<class Tinput_iterator>
Tmodel perform_fitting(Tinput_iterator begin_data, Tinput_iterator end_data, std::vector<Tpoint>& inliers = {});
vector
? Что он будет делать с предоставленным пустымvector
, чего не будет делать с пустымvector
по умолчанию? - person James Adkison   schedule 26.02.2016if(bar.empty()) return;
- person NathanOliver   schedule 26.02.2016std::vector
используется для хранения вывода? Есть ли причина не возврата по значению? - person TartanLlama   schedule 26.02.2016bool paramIsImportant
в качестве другого параметра - person deviantfan   schedule 26.02.2016const
, и вы используете его в качестве выходного параметра... - person James Adkison   schedule 26.02.2016const&
, то этот вопрос будет глупым, поскольку вы просто проверяете, является ли векторempty()
. Даже если вы передаете вектор с сайта вызова, если он пуст, вы ничего не можете сделать с вектором, поскольку онconst
. - person NathanOliver   schedule 26.02.2016