open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0620r0.html

ли веская причина, почему<> требуется при указании класса шаблона, который имеет значения по умолчанию для всех его параметров шаблона?

например

#include <iostream>

template<typename T = int>
class C {
public:
    T obj = 0;
};

int main()
{
    C c1; // Error on almost all compilers (see note below)
    C<> c2;
    std::cout << c1.obj << " " << c2.obj << std::endl;
    return 0;
}

Недостатком этого примера является то, что если у вас есть класс, который уже используется в разных местах, и вы позже преобразуете его в шаблон класса с параметрами по умолчанию для его аргументов шаблона, то вы должны добавить<> во всех местах, которые используют класс.

Примечание: похоже, что GCC последней HEAD (7.0.1)принимает синтаксис без<>, Более ранние версии не делают и не делают никакой версии Clang. Это ошибка в последней GCC HEAD? Или, возможно, стандарт C ++ 17 теперь принимает синтаксис без<> а GCC здесь только впереди?

Ответы на вопрос(1)

Ваш ответ на вопрос