我正在尝试创建一个接受给定类型的几个参数的函数,但是应该通过模板指定参数的类型和数量.
我发现在这种情况下使用C++ 11的initializer_list可能是一个很好的技术,但是有可能在编译时检查它的大小吗?还有其他技术可以解决这个问题吗?
#include// Here I want to define type and number of components for each point template class Geometry { public: void addPoint(std::initializer_list coords) { assert(coords.size() == DIM); // Working good, but not compile-time // Next line does not compile because size() is not known at compile-time static_assert(coords.size() == DIM, "Wrong number of components"); } };
Nicol Bolas.. 6
您无法静态断言运行时数量.并且a的值的数量initializer_list
在运行时由函数的调用者决定.
甚至不能使您的功能constexpr
起作用,因为不需要在编译时对函数进行评估.
您应该使用可变参数模板.
您无法静态断言运行时数量.并且a的值的数量initializer_list
在运行时由函数的调用者决定.
甚至不能使您的功能constexpr
起作用,因为不需要在编译时对函数进行评估.
您应该使用可变参数模板.