ошибка: пропущены аргументы шаблона ранее для переменных-членов constexpr - PullRequest
0 голосов
/ 18 октября 2019

Я рассмотрел некоторые из подобных вопросов и не нашел решения, подходящего для моего варианта использования. У меня есть переменная constexpr, которую я хочу шаблонировать с аргументами по умолчанию, и я не могу заставить ее работать:

// Test.hpp
class Test
{
public:
    template <bool val = false>
    constexpr static bool MY_BOOL = val;
};

// Test.cpp
#include "Test.hpp"
#include <iostream>

int main()
{
    std::cout << Test::MY_BOOL << "\n";
    return 0;
}

g ++ ошибка компилятора:

Test.cpp: In function ‘int main()’:
Test.cpp:6:29: error: missing template arguments before ‘<<’ token
  std::cout << Test::MY_BOOL << "\n";

Пожалуйста, дайтея знаю, что я делаю неправильно / если это можно исправить. Спасибо!

1 Ответ

2 голосов
/ 18 октября 2019

Список аргументов шаблона после имени шаблона может быть пропущен только для шаблона функции. Для шаблона переменной, шаблона класса или шаблона псевдонима, даже если вы не хотите предоставлять какие-либо явные аргументы, вам нужен хотя бы пустой список <>.

Чтобы использовать аргумент шаблона по умолчанию false:

std::cout << Test::MY_BOOL<> << "\n";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...