prog.cpp: In function 'int main()':
prog.cpp:47:17: error: no matching function for call to 'foo()'
foo<pt.GetX()>();
^
prog.cpp:36:6: note: candidate: template<int S> void foo()
void foo()
^
prog.cpp:36:6: note: template argument deduction/substitution failed:
prog.cpp:47:13: in constexpr expansion of 'pt.Point::GetX()'
prog.cpp:47:17: error: mutable 'Point::Z' is not usable in a constant expression
foo<pt.GetX()>();
^
prog.cpp:47:17: note: in template argument for type 'int'