Эта проблема обсуждалась несколько раз, но все решения, которые я нашел, либо не работали, либо основывались на boost static assert. Моя проблема проста. У меня есть класс, и я хочу только разрешить реальные типы (double и float). Мне нужна ошибка времени компиляции, если я пытаюсь создать экземпляр класса с типом, отличным от float или double. Я использую Visual С++ 11. Вот что я пробовал:
template <typename RealType>
class A
{
// Warning C4346
static_assert(std::is_same<RealType, double>::value || std::is_same<RealType, float>::value);
}
template <typename RealType>
class A
{
// Error C2062: type 'unknown' unexpected
static_assert(decltype(RealType) == double || decltype(RealType) == float);
}
Любые идеи? Спасибо заранее!