Нет, поскольку конструктор копирования по умолчанию будет вызывать конструктор копирования родителя (который удаляется), это не будет работать.
Почему вы просто не протестировали его:
int main() {
auto x = fact_t<int>(5);
auto y = x;
}
Результат:
copytest.cpp: In function 'int main()':
copytest.cpp:32:14: error: use of deleted function 'fact_t<int>::fact_t(const fact_t<int>&)'
auto y = x;
^
copytest.cpp:21:7: note: 'fact_t<int>::fact_t(const fact_t<int>&)' is implicitly declared as deleted because 'fact_t<int>' declares a move constructor or move assignment operator
class fact_t: public exp_t<val_t> {
^~~~~~