меня скачать источник изC++ 11 «авто» в нераскрытом C++ 11 компилятора
http://matt.eifelle.com/2012/07/17/just-a-small-example-of-numerical-optimization-in-c/
и попытаться собрать в г ++ 4.4.6, которые не знаю о авто происходят некорректно источник:
auto optimizer = Optimization::Local::build_simplex(
fun,
Optimization::Local::make_and_criteria(Optimization::Local::IterationCriterion(max_iterations),
Optimization::Local::RelativeValueCriterion<float>(ftol)));
Чтения веб-страницы, я знаю, что это происходит потому, что авто поддерживаются в C++ 11, так что я пытаюсь найти источник, что я скачал, есть simplex.h, который имеет следующий исходный код:
template<class Function, class Criterion>
static Simplex<typename Function::DataType, typename Function::ParameterType, Function, Criterion> build_simplex(const Function& fun, const Criterion& criterion)
{
return Simplex<typename Function::DataType, typename Function::ParameterType, Function, Criterion>(criterion);
}
тогда я изменю
auto optimizer
в
Simplex<typename Function::DataType, typename Function::ParameterType, Function, Criterion> optimizer
или
Optimization::Simplex<typename Function::DataType, typename Function::ParameterType, Function, Criterion> optimizer
никто не будет проходить компилятор !!
Я мало знаю о использовании шаблона C++, за исключением получения компиляции C++ 11, . Какую возвращаемую модификацию типа данных я должен сделать для этого авто?
Update:
Спасибо за любезно помочь, я могу изменить, чтобы int optimizer
и компиляции, я получил: test_rosenbrock_simplex.cpp:44: error: cannot convert Optimization::Local::Simplex<float, Eigen::Matrix<float, 2, 1, 0, 2, 1>, Rosenbrock, Optimization::Local::AndCriteria<Optimization::Local::IterationCriterion, Optimization::Local::RelativeValueCriterion<float> > >
к int
при инициализации
затем изменить код:
Optimization::Local::Simplex<float, Eigen::Matrix<float, 2, 1, 0, 2, 1>, Rosenbrock, Optimization::Local::AndCriteria<Optimization::Local::IterationCriterion, Optimization::Local::RelativeValueCriterion<float> > > optimizer
это работает !!!!!
г ++ -O2 -march = родной -msse2 -m64 -DEIGEN_NO_DEBUG test_rosenbrock_simplex.cpp -I/дом/USRA/инструменты/собственный-Эйген-5097c01bcdc4 -o test_rosenbrock_simplex.exe
./test_rosenbrock_simplex.exe
-2.75 -0.5 0
2.1875 1.125 0
Starting point: 10
10
Starting value: 8181
Best point: 1
1
Best value: 5.68434e-14
Это заставляет меня ценить 'auto' немного больше. – Rapptz
Какая * актуальная * ошибка вы получаете? Вероятно, он длинный, но он также, вероятно, содержит ответ. –
Вы пытались скомпилировать с '-std = C++ 11'? – RageD