Почему следующий код не компилируется в MSVC
#include <vector>
void func(double (* fptr)(double), const std::vector<double> & v = {})
{
}
Я получаю следующие ошибки.
source_file.cpp (6): ошибка C2065: 'fptr': необъявленный идентификатор
source_file.cpp (6): ошибка C2062: тип 'double' неожиданный
source_file.cpp (6): ошибка C2143: синтаксическая ошибка: отсутствует ';' до '{'
source_file.cpp (6): ошибка C2143: синтаксическая ошибка: отсутствует ')' перед ';'
source_file.cpp (6): ошибка C2447: '{': отсутствует заголовок функции (формальный список старого стиля?)
source_file.cpp (6): ошибка C2059: синтаксическая ошибка: ')'
source_file.cpp (7): ошибка C2447: '{': отсутствует заголовок функции (формальный список старого стиля?)
Microsoft (R) C / C ++ Оптимизирующая версия компилятора 19.00.23506 для x64
Когда я удаляю - векторное значение по умолчанию:
void func(double (* fptr)(double), const std::vector<double> & v)
или указатель на функцию:
void func(const std::vector<double> & v = {})
ошибки исчезают. Это какая-то ошибка MSVC или я что-то упустил?
Clang и G ++ не имеют проблем с кодом.
Вы можете проверить код с
https://rextester.com/l/cpp_online_compiler_visual