Я хочу создать структуру времени компиляции, которая отображает сообщения для процессоров по умолчанию, но мой код не скомпилируется в msvs 2015 update2. Я думаю, что это ошибка в компиляторе, поскольку код довольно легальный и компилируется с помощью gcc. Ниже вы можете увидеть минимальный пример воспроизведения проблемыОшибка создания шаблона в msvs 2015
#include <tuple>
struct About;
struct PluginStub
{
static void About();
};
template<typename Sink>
class Processor
{
template<typename Call, typename Stub, Stub Pointer>
struct Method;
using Methods = std::tuple<Method<About, decltype(&PluginStub::About), &PluginStub::About>>;
};
Это дает такой результат:
1> main.cpp(25): error C2440: 'specialization': cannot convert from 'void (__cdecl *)(void)' to 'unknown-type'
1> main.cpp(25): note: Context does not allow for disambiguation of overloaded function
1> main.cpp(26): note: see reference to class template instantiation 'Processor<Sink>' being compiled
Вопросы:
- Правильно ли я об ошибке в МСВС?
- Как решить эту проблему?
@Cody Грей. В том же шаблоне – sliser