Я пытаюсь скомпилировать некоторый код с открытым исходным кодом (https://github.com/BieremaBoyzProgramming/bbpPairings),), который я могу получить для компиляции в Linux, используя g++
(v6.3.0), но не удается скомпилировать в Visual Studio (VS Community2019 / 16.1.5), с несколько неясной (для меня, но мой C ++, по общему признанию, слабой) ошибкой: "ошибка C2143: синтаксическая ошибка: отсутствует"; "перед" <"". </p>
код, вызывающий нарушениев источнике здесь , но минимальный пример, извлеченный из кода:
#include <iostream>
#include <random>
class Configuration {};
class MatchesConfiguration {
public:
template <class RandomEngine>
MatchesConfiguration(
Configuration&&,
RandomEngine&);
};
template <class RandomEngine>
MatchesConfiguration::MatchesConfiguration(
Configuration&& configuration,
RandomEngine& randomEngine) {}
template
MatchesConfiguration::MatchesConfiguration<std::minstd_rand>( // <--- SYNTAX ERROR HERE
Configuration&&,
std::minstd_rand&);
int main()
{
std::cout << "Hello World!\n";
}
Я посмотрел на MSDN описание кода ошибки , но мое понимание C ++ и шаблонов слишком слабое, чтобы понять, что происходит не так. Проект README говорит, что C ++ 14 ожидаем (с некоторыми дополнительными C ++ 17 вещами для FS, которые здесь не имеют значения, я думаю), но, насколько я понимаю, из таблицы совместимости функций все C ++ 14 должны поддерживаться VS 2019.